【问题标题】:How can I setState and push object to array?如何设置状态并将对象推送到数组?
【发布时间】:2020-03-17 16:02:43
【问题描述】:

我如何setState 并推送到数组? 目前什么都没有发生...

这是我的代码

状态

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

裁剪图像

const choosePicture = () => {
    ImagePicker.openPicker({
        width: 300,
        height: 400,
        cropping: true,
    })
        .then(image => {
            onSelectedImage(image);
        })
        .catch(error => {
            console.log(error);
        });
};

设置状态

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()}
/>

【问题讨论】:

    标签: javascript react-native


    【解决方案1】:

    您必须复制您的 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);
    

    【讨论】:

      猜你喜欢
      • 2019-02-26
      • 2018-05-10
      • 2017-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多