简体   繁体   English

如何设置状态并将对象推送到数组?

[英]How can I setState and push object to array?

How can I setState and push to an array?哪有我setState并推到一个数组? Currently nothing happens...目前什么都没有发生...

This is my code这是我的代码

State状态

const [imageData, setImageData] = useState([]);

crop image裁剪图像

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);

And Flatlist和平面列表

<FlatList
    data={imageData}
    renderItem={itemData => (
        <View>
            <Image
                source={{uri: itemData.item.url}}
                style={{width: 200, height: 200}}
            />
        </View>
    )}
    keyExtractor={item => item.id.toString()}
/>

You must copy your imageData array instead of putting its refernce into newDataImg.您必须复制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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM