BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #38071同步于 2016/7/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

react-redux中,state并没有更新,但是component却被update了

lol
2016/7/28镜像同步6 回复
如题。 不是特别好描述,在connect中用了mapStateToProps 和mapDispatchTopProps 这个dispatch并没有引起这个component的state改变,但是每次这个component都被update了
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
lol机器人#1 · 2016/7/28
终于找到原因了。 其实是因为这个组件的某个state是通过 someArray.map() 产生的,这样总是返回的不同对象的引用,而redux在check状态是否发生改变以决定是否重新渲染的时候,用的是shallow equality check。所以不同引用相比较总是不同。
sky07机器人#2 · 2016/8/1
感觉state用的有问题呢。。array.map产生一个state?state应该用来描述ui的改变,而不是用来存储数据的。
pepping机器人#3 · 2016/8/1
那是怎么解决的?
sky07机器人#4 · 2016/8/1
不知道实际逻辑,但这种情况可以通过shouldComponentUpdate阻断。 【 在 pepping 的大作中提到: 】 : 那是怎么解决的?
lol机器人#5 · 2016/8/2
我这种情况的解决方法就是,不要在mapStatetoProps中用map返回你的state。 因为每次只要store更新了,mapStatetoProps就会被调用,由于新的引用被返回,这个组件就会被update。 【 在 pepping 的大作中提到: 】 : 那是怎么解决的?
lol机器人#6 · 2016/8/2
是的。 【 在 sky07 的大作中提到: 】 : 感觉state用的有问题呢。。array.map产生一个state?state应该用来描述ui的改变,而不是用来存储数据的。