Javascript 替换处于状态的数组元素(整数)
我在React的Javascript 替换处于状态的数组元素(整数),javascript,reactjs,immutability,Javascript,Reactjs,Immutability,我在React的状态下有一个简单数组,它只包含整数: this.state = { myArray: [1,2,3] } 我试图以不变的方式替换一个值(值2应替换为8): 但我的方式在状态中不会改变。我想我没有使用对象。请以正确的方式分配。您可以使用来复制数组,修改副本,然后分配它。因为您正在创建一个新的数组而不是修改现有的数组,所以您仍然可以避免变异问题 const valueToReplace = 2 const newValue = 8 const newArray = this.s
状态下有一个简单数组
,它只包含整数:
this.state = {
myArray: [1,2,3]
}
我试图以不变的方式替换一个值(值2
应替换为8
):
但我的方式在状态中不会改变。我想我没有使用对象。请以正确的方式分配。您可以使用来复制数组,修改副本,然后分配它。因为您正在创建一个新的数组而不是修改现有的数组,所以您仍然可以避免变异问题
const valueToReplace = 2
const newValue = 8
const newArray = this.state.myArray.slice() // copy
const arrayPosition = newArray.indexOf(valueToReplace)
newArray[arrayPosition] = newValue
this.setState({myArray: newArray})
最好先创建阵列的克隆,然后替换该值:
const valueToReplace = 2
const newValue = 8
const myArray = this.state.myArray.slice(0);
const arrayPosition = myArray.indexOf(valueToReplace)
myArray[arrayPosition] = newValue
this.setState({myArray: newArray})
Object.assign
只是将对象/数组克隆到另一个变量中,并且不更改数组中的值
const valueToReplace = 2
const newValue = 8
const myArray = this.state.myArray.slice(0);
const arrayPosition = myArray.indexOf(valueToReplace)
myArray[arrayPosition] = newValue
this.setState({myArray: newArray})