3 回答

TA贡献1785条经验 获得超8个赞
您正在尝试直接修改状态数据,但您不能。
您必须调用函数 setState 来改变(更改)它的任何数据的状态。
如何?
this.setState({theData: newState})
尝试直接对其进行修改将具有您当前遇到的行为。

TA贡献1865条经验 获得超7个赞
在反应中,您不能直接编辑您的状态变量。您必须创建一个新的临时变量,对其进行编辑然后调用setState()以实现您想要的并触发重新渲染。
所以你的handleAddItem变成:
handleAddItem(s) {
// Create a copy of items
const newItems = { ...this.state.items }; // Assuming that items is an object
// Edit the copy
newItems[s.listName].push({ name: s.newItem });
// Call setState
this.setState({ items: newItems });
}

TA贡献2036条经验 获得超8个赞
你不应该直接改变状态。你应该打电话setState:
https://reactjs.org/docs/state-and-lifecycle.html#do-not-modify-state-directly
handleAddItem(s) {
this.setState(({ items }) => {
const updatedItems = {...items};
updatedItems[s.listName] = [...updatedItems[s.listName], { name: s.newItem }];
return {
items: updatedItems
};
});
}
添加回答
举报