关于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回答

张轩

2019-02-15

同学 你学的很不错 能发现我的错误 哈哈 很教条的说 this.state 是应该不能改变的,改变了只是不会引发任何界面的变化,只有 this.setState 可以触发变化,所以我在这里只是把 this.state 看成一个普通的对象而已,编辑这个对象,删除一个键,然后再调用 setState 更新,其实最好的做法是这样是用 immutable 的方法来删除。我应该定义这样一个方法来做这项工作:

function removeKey(obj, deleteKey) {
  let clone = { ...obj };
  delete clone[deleteKey];
  return clone;
}

我以后会更新一下代码让这个方法严谨些,但是原来的方法也是可以运行的。至于选用哪种方法,仁者见仁,智者见智,我们不应该教条,完全按照教科书去做。 

1
2
前端沙雕
不可变值
2020-04-09
共2条回复

React16组件化+测试+全流程 实战在线账本项目

轻松上手,从设计图到上线,精通组件化思维和组件测试

713 学习 · 177 问题

查看课程