我有一个关于reactjs的快速问题,希望有人可以回答。让它保持简短和甜美。
我有一个州的财产:
this.state = {
property: []
}
此属性是一个数组。我想更改数组中的一个属性:
this.setState({
property:{
index: value,
}
});
我有索引'作为变量传递到我的状态更改函数。索引是一个数字。索引的值将是诸如' 0',' 1',' 2' ......等等。 做我上面做的将设置属性' index'的值。这不是我想要的。我该如何改变名称存储在变量' index'?
中的属性的值?答案 0 :(得分:2)
您创建一个副本,假设索引是您希望更改发生的位置,而值是您可以使用此值的新值
this.setState({
property: this.state.property.map((anItem, i) => (i === index) ? value : anItem)
});
如果您的真实状态恰好有更多属性,那么您需要使用此
this.setState({
...this.state,
property: this.state.property.map((anItem, i) => (i === index) ? value : anItem)
});
答案 1 :(得分:1)
我认为你正在寻找这样的东西:
const index = 'dummy'
const value = 69
this.setState({
property:{
[index]: value,
}
});
// after the state updated
console.log(this.state.property.dummy); // 66
答案 2 :(得分:1)
不要直接改变this.state
中的任何内容。你应该让React处理它,所以做一个浅的副本并操纵它。
const newProperty = [...this.state.property];
newProperty[index] = value;
this.setState({property: newProperty});
如果您想使用ES5制作副本,请改为:
const newProperty = this.state.property.slice();