3 回答
TA贡献1799条经验 获得超9个赞
+=不是那样工作的。使用扩展运算符复制数组的先前内容,然后手动添加新对象 -
}).then((res) => {
const newThing = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
};
this.setState(prevState => ({
sds: [...prevState.sds, newThing]
}))
}
你永远不应该尝试自己改变状态,总是使用setState. 在这种情况下,您可以传递一个函数作为第一个参数,它提供以前的状态。这样,您可以确保this.state.sds保留所有内容,并将新对象添加到该数组中。
TA贡献1966条经验 获得超4个赞
您可以尝试使用下一个示例:
this.state.sds[this.state.sds.length] = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
}
[编辑]
就像@larz 所说的那样,您必须使用 setState 方法来避免代码的意外结果。
var newSds = this.stage.sds;
newSds[newSds.length] = {
id: i,
title: res.data[0].chemName,
selected: false,
key: 'sds'
};
this.setState({ sds: newSds});
你可以得到有关反应生命周期的详细信息在这里和“状态更新被合并”在这里
添加回答
举报