如何使用setstate在对象数组中更新特定对象的属性

问题描述 投票:0回答:1

我想在react上下文中使用setState更新array(object array)的特定对象的特定值!

这是我在做什么

getFieldData = (inputType, data, id) => {
       const index = this.state.sharedPeople.findIndex(a => a.id == id);
       this.setState({ sharedPeople: [this.state.sharedPeople[index], { email: data }] })}

无法通过执行此操作来更新值,它在这里会发生故障!!请指导我做这种行为的更好和正确的方法!

arrays reactjs setstate
1个回答
0
投票

您可以map旧数组并比较它的ids,直到找到正确的数组为止。然后覆盖您想要spreading原始对象的属性。否则,只需返回item

updateFoo = (id, value) =>{
    this.setState(prev =>({
        data : prev.data.map(item =>{
            if(item.id === id) return {
               ...item,
               foo : value
            }
            return item
        })
    }))
}
© www.soinside.com 2019 - 2024. All rights reserved.