如何在反应中更新地图函数内的所有元素的对象

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