Hook 是 React 16.8 的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性。
1.useState
设置和改变state,代替原来的state和setState
2.useEffect
代替原来的生命周期,componentDidMount,componentDidUpdate 和 componentWillUnmount 的合并版
3.useContext
不需要一层一层传参,可以直接组件传值
第一个参数,是函数,默认第一次渲染和更新时都会触发,默认自带一个return ,return一个函数表示可以再销毁之前可以处理些事情
第二个参数,数组【】,空的时候表示只执行一次,更新时不触发,当参数变化时才会执行useEffect
useEffect可以多次使用,按照先后顺序执行
顶层先声明 Provier 组件,并声明 value 属性
后代组件声明 Consumer 组件
额外的hook
4.useLayoutEffect
与 useEffect 作用相同,但它会同步调用 effect
useLayoutEffect 强制useEffect的执行为同步,并且先执行useLayoutEffect内部的函数
5.useRef
跟以前的ref,一样,只是更简洁了
6.useMemo
控制组件更新条件,可根据状态变化控制方法执行,优化传值
7.useCallback
useMemo优化传值,usecallback优化传的方法,是否更新
8.useReducer
代替原来redux里的reducer,配合useContext一起使用
9.useDebugValue
在 React 开发者工具中显示自定义 hook 的标签,调试使用。
10.useImperativeHandle
可以让你在使用 ref 时自定义暴露给父组件的实例值。
over