Javascript 更新处于函数组件状态的数组
我开发了一个应用程序,允许用户从设备上载图像,然后我将上载的图像保存在名为LocalImages的数组中,如下所示: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,
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))代码>