我有一個檔案陣列,用于稍后將它們附加到表單資料中,但首先我需要壓縮它們并附加到已壓縮檔案的新陣列中。我堅持將檔案附加到回圈中的新陣列。
我所做的嘗試:
const [compressedImages, setCompressedImages] = useState([]);
在回圈中:
setCompressedImages(...compressed) //it doesn't seem to work
再試一次:(回圈中)
compressedImages = [...compressed] //doesn't work
或者
compressedImages.push(compressed) //doesn't work
為什么傳播運算子在這種情況下不起作用?
我有什么
<input
type="file"
multiple
onChange={e => selectImages(e)}
/>
函式選擇影像:
const [images , setImages] = useState([]);
const selectImages = e => {
setImages(e.target.files);
}
然后我需要壓縮我的檔案并將它們全部附加到另一個陣列中。
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
}
uj5u.com熱心網友回復:
要將元素添加到陣列狀態,您應該基于當前狀態創建一個新陣列并將新元素添加到其中,然后將新陣列設定為狀態:
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']);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/411456.html
標籤:
