React父组件数据实时更新了,子组件没有更新的问题
父组件数据实时更新了,子组件没有更新
需求:
父组件发送请求后,根据返回数据实时更新部分state,子组件实时检测跟随跟新
1.可以使用利用react的componentWillReceiveProps方法
子组件中增加
componentWillReceiveProps(nextProps:any){ this.setState({ reuploadFlag: nextProps.reuploadFlag, successFlag: nextProps.successFlag, uperrorFlag: nextProps.uperrorFlag }) }
2.componentWillReceiveProps方法要被淘汰了,不推荐
componentWillReceiveProps()方法判断前后两个 props 是否相同,如果不同再将新的 props 更新到相应的 state 上去。
这样做一来会破坏 state 数据的单一数据源,导致组件状态变得不可预测,另一方面也会增加组件的重绘次数。
可以使用getDerivedStateFromProps静态方法
3.如果从父组件中传到的值
在子组件只是用来展示,没有对其进行操作,直接从props中获取即可,不用再在子组件的constructor中将props赋值给state
因为子组件刷新时,不再执行constructor,也就不会对state重新赋值,所以子组件虽然执行了render,但是渲染数据不变。
数据只是用来展示的话,不需要像上面这个在constructor赋值给state
4.也可以在父组件中设置子组件的key值
来保证每次重新渲染(key值变化)
但是这种方法只能监听一个参数
使用ref
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
React引入antd-mobile+postcss搭建移动端
本文给大家分享React引入antd-mobile+postcss搭建移动端的详细流程,文末给大家分享我的一些经验记录使用antd-mobile时发现我之前配置的postcss失效了,防止大家踩坑,特此把解决方案分享到脚本之家平台,需要的朋友参考下吧2021-06-06React-Native中禁用Navigator手势返回的示例代码
本篇文章主要介绍了React-Native中禁用Navigator手势返回的示例代码,具有一定的参考价值,有兴趣的可以了解一下2017-09-09详解在React.js中使用PureComponent的重要性和使用方式
这篇文章主要介绍了详解在React.js中使用PureComponent的重要性和使用方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2018-07-07
最新评论