这个问题困扰我几天了,一直解决不了,各种尝试,才知道自己还差的很远。
首先,上面那个标题是错的 错的 错的,之所以这样写是方便搜索。
之所以没有快速发现问题所在,是因为自己打印的state,我只打印了next state,没有看到pre state的变化。集成了redux-logger才看出来,所以一个直观的日志还是需要的。

代码是这个样子的:

然后看看状态:

从这个状态来看,我们把之前和之后状态都修改了,所以组件没有更新。在代码里面我们直接对上一个state进行了修改,所以这里的解决办法就是拷贝一份数据进行修改
修改如下:

我这里用了JSON方法,也可以通过其他的方式进行拷贝。

最后一句话:pre state 和 next state对比变化组件才会更新
网友评论