New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[react] 为什么React并不推荐我们优先考虑使用Context? #943
Comments
1、Context目前还处于实验阶段,可能会在后面的发行版本中有很大的变化,事实上这种情况已经发生了,所以为了避免给今后升级带来大的影响和麻烦,不建议在app中使用context。 |
从Provider到下属consumer的数据传递不受shouldComponentUpdate方法的约束,因此,即使上层组件跳过更新,Consumer也会被更新。 |
事实上现在很多组件库都转而改用Context来实现状态管理的,比如Formik这种表单库,通过Context的方式实现解耦,更容易封装局部字段组件实现表单复用,第三方的库比如redux,remath,mobx等等,其实在触发更新的时候反而会造成许多不必要的render,尤其是面向函数组件使用的时候。 Context不一定要传value,我们可以在Context层做一个事件发布订阅器,通过value传递下去,子组件从context中取出订阅器订阅数据,这样甚至不需要Context去setState,同样能实现数据更新,而且能达到局部更新的效果 |
一般情况下不推荐使用,如果某些情况下无法使用state和props解决问题,同时第三方的数据流管理工具也无法很好的满足需求,那么是可以使用context的;并且其实在react-redux中,会使用到一个Provider组件,这个组件就是一个被封装的组件,这个组件就是将状态从store中取出,然后将整个状态通过context的方式传递给子组件,子组件又通过connent来进行高阶包裹,来通过contextType来获取,store中的状态,所以其实在很多第三方库中都用了context封装 |
组件根据自身情况,在shouldCompoentUpdate返回了false,本来就是逻辑需求,不能算缺点呀 |
[react] 为什么React并不推荐我们优先考虑使用Context?
The text was updated successfully, but these errors were encountered: