React Hook作用: 可以让我们在函数式组件中添加state,也可以让我们使用部分生命周期钩子函数
Hook特点
1.无需修改组件结构的情况下复用状态逻辑
2.可将组件中相互关联的部分拆分成更小的函数,复杂组件将变得更容易理解
3.每一个组件内的函数(包括事件处理函数,effects
,定时器或者api调用等等)会捕获某次渲染中定义的props
和state
4.memo缓存组件 ,useMemo缓存值, useCallback缓存函数
5.每次render都有自己的props与state。每次render都有自己的effects。(每一个组件内的函数,包括事件处理函数,effects,定时器或者api调用等等,会捕获某次渲染中定义的props和state)
6.当我们更新状态的时候(如setCount(count + 1))
React会重新渲染组件,每一次渲染都能拿到独立的count状态,这个状态值是函数中的一个常量
7 .没有了显性的生命周期,所有渲染后的执行方法都在useEffect
里面统一管理
8.函数式编程,你不需要定义constructor
,render
,定义class
9.某一个组件,方法需不需要渲染,重新执行完全取决于你,而且十分方便管理
useEffect
函数式组件中不存在传统类组件生命周期的概念
会捕获props和state,所以即便在回调函数里,你拿到的还是初始的props和state。
useMemo
跟vue中的computed计算属性很类似
主要用来解决使用React hooks产生的无用渲染的性能问题,使用function的形式来声明组件,