【发布时间】:2017-03-05 22:13:23
【问题描述】:
下面的反应代码错了吗?
state={ foo: { bar: true } } // line 1
setState(state) // line 2
state.foo.bar = false // line 3
setState(state) // line 4
如果是,为什么?
This提示错了,但没有解释为什么?
我认为没有错,原因如下:
-
line 2vdom1已创建 -
line 4vdom2被创建 -
比较
vdom1和vdom2 - 差异传播到实际的 DOM
如果是这种情况,那么在line3 处变异state 应该不会对line4 处发生的事情产生任何影响。
换句话说:
这应该是等效的代码:
state={ foo: { bar: true } } // line 1
setState(state) // line 2
state={ foo: { bar: false } } // line 3
setState(state) // line 4
这段代码是否等同于上面的代码?
如果没有,为什么不呢?
【问题讨论】:
-
我悬赏这个相关问题:stackoverflow.com/questions/37755997/…
-
这个也有关系stackoverflow.com/questions/28300547/…但是没有给出答案
标签: reactjs