使用react的context之后,会导致组件被刷新【react中context的优化】很多时候,为了减少render的次数,我们不得不使用shouldUpdate或memo等方法,但是当组件使用了context上下文之后,无论你的反回值是true或false,只要context里的值发生了改变,都无法阻止组件的render,这也是因为组件需要监听context值的变化,但有时,我们并不需要所有变化都被更新 。所以尝试了几种方案进行优化:
- 更新时不使用扩展符{...},context就不会生成新的对象,但明显不合理 。
- 把值存在顶层的state中,不存context中,这样又有点绕,得不偿失
- 使用EventEmitter这种发布式模式,不在本次讨论范围内,包括使用redux的方案
- 使用不同颗粒度的context
- 既然使用了useContext的组件一定会被render,只要把useContext进行上移即可,移到父组件上去调用,相当于一种折中的方式,把大量子组件的更新context的方法移交到父组件中去,这样就可以变相的优化了 。
参考资料:https://github.com/facebook/react/issues/15156#issuecomment-474590693 ,官网上提到可以 通过使用 memoization 来优化 。
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
