前言:
使用redux做数据共享的时候,我已经调用了dispatch操作数据,state数据也已经改变了,但是就是不能同步到页面上。查阅了资料终于查询到了2个原因(我更倾向于后者)。
原因①:
React中组件的props更新需要经历更新过程,也就是调用了componentWillReceiveProps等一系列生命周期函数才会更新this.props。但是dispatch是异步的,而我们的页面操作的时候是同步的,因为js的运行机制,所有异步调用都会在同步调用全部完成后运行。当页面已经走完了同步操作,props的值并没有改变,还是原先的值。之后再执行dispatch虽然获取到了最新的值,但是渲染不到页面上。
原因②:state数据引用一直是同一个,被react-redux内置的shallow compare给过滤掉了。只需要改变数据的引用就好。
解决办法:我直接改变了state中的引用,然后就成功拿到数据了也渲染页面。
结尾:分享个脑筋急转弯
分享:你能以最快速度,把冰变成水吗?(可以评论留言答案:不要百度哦)