如何在反应中更新地图函数内的所有元素的对象
How to update an object all elements inside map function in react
我想在地图中一个一个地更新对象的所有元素,它只更新对象的一个元素而不是全部
const [docUrls, setDocUrls] = useState({
imageUrl: "", panUrl: "",statementUrl: ""
})
来自 api
的回复
res.data.map(item=>{
if(item.type === 'image'){
setDocUrls({...docUrls, imageUrl:item.url})
}else if(item.type === 'pan'){
setDocUrls({...docUrls, panUrl:item.url})
}else
setDocUrls({...docUrls, statementUrl:item.url})
}})
setDocUrls
是异步的,因此您每次调用它时都会覆盖 docUrls
。
由于 ...docUrls
.
,拥有多个 setDocUrls({...docUrls, imageUrl:item.url})
只会继续覆盖之前的调用
相反,复制 docUrl。
const docUrlCopy = { ...docUrls }
res.data.map(item=>{
if(item.type === 'image'){
docUrlCopy.imageUrl = item.url
}else if(item.type === 'pan'){
docUrlCopy.panUrl = item.url
}else
docUrlCopy.statementUrl = item.url
}})
setDocUrls(docUrlCopy) // only 1 call
我想在地图中一个一个地更新对象的所有元素,它只更新对象的一个元素而不是全部
const [docUrls, setDocUrls] = useState({
imageUrl: "", panUrl: "",statementUrl: ""
})
来自 api
的回复res.data.map(item=>{
if(item.type === 'image'){
setDocUrls({...docUrls, imageUrl:item.url})
}else if(item.type === 'pan'){
setDocUrls({...docUrls, panUrl:item.url})
}else
setDocUrls({...docUrls, statementUrl:item.url})
}})
setDocUrls
是异步的,因此您每次调用它时都会覆盖 docUrls
。
由于 ...docUrls
.
setDocUrls({...docUrls, imageUrl:item.url})
只会继续覆盖之前的调用
相反,复制 docUrl。
const docUrlCopy = { ...docUrls }
res.data.map(item=>{
if(item.type === 'image'){
docUrlCopy.imageUrl = item.url
}else if(item.type === 'pan'){
docUrlCopy.panUrl = item.url
}else
docUrlCopy.statementUrl = item.url
}})
setDocUrls(docUrlCopy) // only 1 call