我如何setState
并推送到数组?
目前没有任何反应...
这是我的代码
状态
const [imageData, setImageData] = useState([]);
裁剪图像
const choosePicture = () => {
ImagePicker.openPicker({
width: 300,
height: 400,
cropping: true,
})
.then(image => {
onSelectedImage(image);
})
.catch(error => {
console.log(error);
});
};
setState
const onSelectedImage = image => {
let newDataImg = imageData;
let item = {
id: Date.now(),
url: image.path,
};
newDataImg.push(item);
setImageData(newDataImg);
};
console.log(imageData);
和平面列表
<FlatList
data={imageData}
renderItem={itemData => (
<View>
<Image
source={{uri: itemData.item.url}}
style={{width: 200, height: 200}}
/>
</View>
)}
keyExtractor={item => item.id.toString()}
/>
答案 0 :(得分:0)
您必须复制imageData
数组,而不是将其引用放入newDataImg。
const onSelectedImage = image => {
// Copy the array
let newDataImg = [...imageData];
let item = {
id: Date.now(),
url: image.path,
};
newDataImg.push(item);
setImageData(newDataImg);
};
console.log(imageData);