只能在函数的顶层使用,不能嵌套于循环体、判断条件等里面。原因是因为需要确保Hooks每次在组件渲染中都是按照同样的顺序
只能在React函数组件里,或者自定义钩子(custom Hooks)里使用。
解耦,复用,简洁,可持续维护
[https://juejin.im/post/5c9655c56fb9a070bc3f1554#heading-1]
useState
useEffect
useContext
useMemo
useRef
useReducer
useCallback
useEffect
一个副作用的注册监听与对应的取消注册逻辑全部放在了一起,对比与以往的分别在componentDidMount、componentDidUpdate、componentWillUnmount里分散同一副作用的逻辑。
useContext
这个钩子还是和原有的Context.Provider、Context.Consumer一样
useMemo
原有的React.memo一样,可用于缓存一下计算缓慢的函数,如果依赖没有发生改变,则重复使用旧值。前提必然是这个函数是一个纯函数,否则必然会引发问题。
useRef
useState每次渲染都是新的值,也就是下面示例中,如果我点击3次按钮,分别更新了值触发5次组件重新渲染,那么通过延时5秒后获取current值
useReducer
解决了我们常见写redux的多文件跳跃编写的烦恼
网友评论