💡
原文中文,约3900字,阅读约需10分钟。
📝
内容提要
本文讲解了React中的一些hooks(如useEffect,useMemo,useCallback)如何根据依赖项进行更新。使用areHookInputsEqual()函数比较依赖项是否发生变化,该函数使用了Object.is()方法进行比较。建议不要直接将对象类型的变量放入依赖项中,而是拆分每个键并分别放入依赖项中,或对键进行字典排序后再设置依赖项。
🎯
关键要点
- 本文讲解了React中的hooks如何根据依赖项进行更新。
- 使用areHookInputsEqual()函数比较依赖项是否发生变化,使用Object.is()方法进行比较。
- 建议不要直接将对象类型的变量放入依赖项中,而是拆分每个键并分别放入依赖项中。
- 若依赖项为null,则hook每次渲染时都会执行;若依赖项没有变化,则使用上一次渲染的结果。
- areHookInputsEqual()函数用于比较hook的依赖项是否变化,任意一项变化则返回false。
- Object.is()与==和===的区别在于对待假值和有符号零、NaN的处理。
- 在对比依赖项时,建议将每个key拆分或对key进行字典排序,以避免不必要的hook执行。
➡️