Hook 是 React 16.8 的新增特性。它可以让你在不编写 class组件的情况下(函数组件的情况下)使用 state 以及其他的 React 特性。
Hook:
useState:创建状态及修改状态的方法
useEffect:监听状态的变化 或者 模拟class生命周期,三个周期 componentDidMount componentDidUpdate componentWillUnmount ,执行的异步的操作
useContext:创建上下文对象,可以得到供应的值。目的就是为了能在所有的组件当中进行一些数据共享,可以获得共享的context对象,实现组件间的通讯。
useRef:创建转发对象,转发对象使用在原生html标签上 目的是希望我们通过它快速的获取节点对象。快速访问 dom节点 或者是 类组件实例的方式(函数组件不可以),也是一种组件间的通讯方式
useMemo:目的是性能优化,不用让函数重新执行。第一个参数是一个工厂函数,目的是为了创建缓存数据;第二个参数是一个依赖项,如果依赖项没有变化的话,那么这个函数每一次变化都是取出缓存的值来用。返回的只要是值都可以
useCallback:目的是性能优化,不用重复的去创建新的函数。是用来创建一个缓存函数。第一个参数就是被缓存的函数;第二个参数是依赖项,依赖项发生变化的时候会重新更新缓存的函数。返回的值是一个函数
useReducer:是提供一个区别于useState的状态管理方式
useLayoutEffect:执行的是同步的操作,发生在虚拟dom 在浏览器绘制之前 。在理解学习 useLayoutEffect的时候一定要记得去性能当中 调整cpu的性能到最低
自定义hook:通过一个公共的函数来创建状态,然后书写跟这些状态有关的逻辑,然后把这些状态返回出来给使用的地方 - 只能用于fc
路由的hook:
useNavigate:路由跳转
useRoutes:配置单独的路由组件 - v6版本
redux的hook:
useSelector: 使用redux
useDispatch:dispatch 是用来触发 redux当中的reducer函数再次执行的方法 - 也就是修改