3 回答

TA貢獻1785條經驗 獲得超8個贊
您正在嘗試直接修改狀態(tài)數(shù)據(jù),但您不能。
您必須調用函數(shù) setState 來改變(更改)它的任何數(shù)據(jù)的狀態(tài)。
如何?
this.setState({theData: newState})
嘗試直接對其進行修改將具有您當前遇到的行為。

TA貢獻1865條經驗 獲得超7個贊
在反應中,您不能直接編輯您的狀態(tài)變量。您必須創(chuàng)建一個新的臨時變量,對其進行編輯然后調用setState()以實現(xiàn)您想要的并觸發(fā)重新渲染。
所以你的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個贊
你不應該直接改變狀態(tài)。你應該打電話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
};
});
}
添加回答
舉報