Tengo una serie de archivos para agregarlos en datos de formulario más tarde, pero primero necesito comprimirlos y agregar una nueva matriz de archivos ya comprimidos. Estoy atascado con la adición de archivos a una nueva matriz en bucle .
Lo que hice probé:
const [compressedImages, setCompressedImages] = useState([]);En bucle:
setCompressedImages(...compressed) //it doesn't seem to workun intento más: (en bucle)
compressedImages = [...compressed] //doesn't workO
compressedImages.push(compressed) //doesn't work¿Por qué el operador de propagación no funciona en ese caso?
Qué es lo que tengo
<input type="file" multiple onChange={e => selectImages(e)} />Función seleccionar imágenes:
const [images , setImages] = useState([]); const selectImages = e => { setImages(e.target.files); }Luego necesito comprimir mis archivos y agregarlos todos en otra matriz.
for (let i = 0; i<images.length; i++){ let compressed = await imageCompression(images[i], options) images = [...compressed] //at the end of the loop I must have exactly the same array as 'images' //but with already processed files }Para agregar un elemento a un estado de matriz, debe crear una nueva matriz basada en el estado actual y agregarle el nuevo elemento, luego establecer la nueva matriz como estado:
const [myState, setMyState] = useState([]); // Add an element to state(long way) myState.push('element'); setMyState(myState); // Add an element to state(short way) setMyState([...myState, 'element']);