如何解决如何在reactjs中设置状态特定参数的特定值
this.state = {
array: [1,2,3],objects: [{ id: 1 },{ id: 2 },{ id: 3 }]
}
如何在不使用setStating整个数组/对象的状态下更改对象或数组的特定值?
类似
this.setState({ array[2]: 5 })
this.setState({ object[0].id: 0 })
解决方法
您可以使用辅助函数在索引处设置元素并返回该新更新的数组
const array = [1,2,3]
const object = [{id: 1},{id: 2},{id: 3}]
const setElementAtIndex = (index,value,array) => [
...array.slice(0,index),...array.slice(index + 1)
]
console.log(setElementAtIndex(0,99,array))
console.log(setElementAtIndex(1,array))
console.log(setElementAtIndex(2,array))
console.log(setElementAtIndex(0,{ ...object[0],id: 0 },object))
this.setState({ array: setElementAtIndex(2,5,array) })
this.setState({ object: setElementAtIndex(0,object) })
,
我会使用map
。
const state = {
array: [1,3],objects: [{id: 1},{id: 3}]
}
const newArray = state.array.map((v,i) => i === 2 ? 5 : v);
const newObjects = state.objects.map((v,i) => i === 0 ? {...v,id: 0} : v);
console.log(newArray);
console.log(newObjects);
// this.setState({ ...this.state,array: newArray });
// this.setState({ ...this.state,objects: newObjects });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。