Javascript 更新处于函数组件状态的数组

Javascript 更新处于函数组件状态的数组,javascript,arrays,firebase,react-native,state,Javascript,Arrays,Firebase,React Native,State,我开发了一个应用程序,允许用户从设备上载图像,然后我将上载的图像保存在名为LocalImages的数组中,如下所示: const _pickImage = async () => { let pickerResult = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ImagePicker.MediaTypeOptions.All, allowsEditing: true,

我开发了一个应用程序,允许用户从设备上载图像,然后我将上载的图像保存在名为LocalImages的数组中,如下所示:

const _pickImage = async () => {
      let pickerResult = await ImagePicker.launchImageLibraryAsync({
        mediaTypes: ImagePicker.MediaTypeOptions.All,
        allowsEditing: true,
        aspect: [4, 3],
      })
    let imageUri = pickerResult
       imageUri && {uri: imageUri} 
// here is the array where i save all images.
       setLocalImage(LocalImage.concat([{ 
       uri: pickerResult.uri,
       width: 700,
       height: 450 }]));
         ;
    }
之后,我使用.map为用户显示图像,如果用户按下图像,他/她可以编辑该图像,那么我会重新保存新的图像URI。 问题是: 我找不到更新状态并用新URI替换旧URI的方法。以下是当前代码:它只将编辑过的图像添加到数组中

 setLocalImage(
           LocalImage.concat([{
           uri : imageUri, width: 700, height: 40
          }]))
我使用了拼接方法,但它会删除其他图像。 以下是控制台日志,显示LocalImage中的内容:


问题是:有没有办法替换旧的URI并用新的URI更新状态?

在map函数中,您可以访问每个元素的索引
Array.map((数据,索引)=>{})
通过使用索引,您可以替换旧的URI是的,我可以,但我不知道正确的语法,您能告诉我吗@RagulCsRead更多,关于我读过它,但问题是更新状态数组,而不是理解地图@NurIn react,您必须通过替换状态来更新状态,要解决您的问题,您需要一个唯一的图像id,
setLocalImage(images=>images.map(img=>img.id==id?{id,url,width,height}:img))