react为何要加入hooks
-
无法在组件之间复用数据处理的逻辑,或不够直接,例如props和高阶组件的实现方式
-
复杂组件越来越难理解和维护,易引入bug
-
Class语法带来复杂性
hook是什么
- Hook是一个特殊的函数,它允许你在函数中嵌入(勾入)React的特性,比如生命周期,state等。
hook使用的基本规则
-
只能在函数的最外层调用函数
-
只能在React的函数组件中调用Hook
-
自定义hook命名规则(useSomething)
什么情况下使用hook
- 如果你在编写函数组件并意识到需要向其添加一些 state,以前的做法是必须将其它转化为 class。现在你可以在现有的函数组件中使用 Hook
useState Hook使用建议
- 推荐将不同的state进行分离,单独进行更新
useEffect
-
在React更新DOM之后运行一些额外的功能(订阅,发送网络请求)
-
分类(需清除和无需清楚的副作用)
重要特性
-
useEffect默认情况下每次渲染后执行,包括首次渲染
-
传递给useEffect的函数若返回值为函数,此函数将在组件销毁时执行,以执行effect的清除工作
-
若想执行只运行一次的effect(仅在组件挂载和卸载时执行),可以传递空数组作为useEffect的第二个参数
自定义hook
-
解决React组件中无法灵活共享逻辑的问题
-
自定义hook以use开头
-
相同hook不会共享state
Hook api
参考文章