关于deleteItem的问题
来源:7-6 整合两个页面的逻辑和交互— 首页和创建页
Ian_Liu2015
2019-02-14
老师您好,我想问一个关于react state改变的问题,我有点不太明白下面这段代码
delete this.state.items[item.id]
this.setState({
items: this.state.items
})
这里第一个delete会不会已经改变了state的值呢,因为我也有看到其他的教程说在操作state的时候不应该直接改变state的值。
如果我理解的不对希望老师更正哈, 谢谢
写回答
1回答
-
同学 你学的很不错 能发现我的错误 哈哈 很教条的说 this.state 是应该不能改变的,改变了只是不会引发任何界面的变化,只有 this.setState 可以触发变化,所以我在这里只是把 this.state 看成一个普通的对象而已,编辑这个对象,删除一个键,然后再调用 setState 更新,其实最好的做法是这样是用 immutable 的方法来删除。我应该定义这样一个方法来做这项工作:
function removeKey(obj, deleteKey) { let clone = { ...obj }; delete clone[deleteKey]; return clone; }
我以后会更新一下代码让这个方法严谨些,但是原来的方法也是可以运行的。至于选用哪种方法,仁者见仁,智者见智,我们不应该教条,完全按照教科书去做。
122020-04-09
相似问题