所谓的 "react 为何推荐 state 都是不可变" 是什么意思呢

2018-04-12 14:54:02 +08:00
 ghostgril

网上看到的使用 Immutable 的代码

getInitialState() { return { data: Map({ times: 0 }) } }, handleAdd() { this.setState({ data: this.state.data.update('times', v => v + 1) }); // 这时的 times 并不会改变 console.log(this.state.data.get('times')); }

这里说的 times 不会改变值是什么呢?

2005 次点击
所在节点    前端开发
5 条回复
ghostgril
2018-04-12 14:56:09 +08:00
我在书上看到这段代码,这段代码是为了解释为啥 react 推荐 state 都是不可变的?但是我十分费解,state 不可变的话,那么也变也不会改变把
ghostgril
2018-04-12 14:58:04 +08:00
这里不是调用了 setState 了吗,那么 data 不是变成了新的了?
ghostgril
2018-04-12 14:58:35 +08:00
那么为何里面的 times 不会改变呢
serco
2018-04-12 15:02:14 +08:00
@ghostgril
setState 是异步执行的,所以第三行 console 时 state 还没有更新

按照你的说法 "react 为何推荐 state 都是不可变", 应该这么理解,react 不推荐直接修改 state 的值,而是需要通过 setState 来修改。所以有时候有人会搭配使用 Immutable,但并不是必须的。
ghostgril
2018-04-12 15:13:52 +08:00
@serco 原来如此

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/446235

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX