1、useState:改变变量的值,代替this.state
改变变量的值,代替this.state
2、useEffect:
- 代替生命周期初始化、更新状态的周期、组件销毁的钩子
- 执行的时机可控:
[]:执行一次
[variable]:根据状态更新
null: 组件中只要有变量状态更新就会执行
3、useContext: 父组件向子组件传值(子组件如何向父组件传值)
通过CreateContext创建上下文,并在ContextProvide元素中提供初值,在子组件中通过useContext获取
4、useReducer:代替redux中action、reducer触发动作,修改全局状态的一整套逻辑
通过useReducer定义传入的(state,action)参数,以及不同的action.type触发不同的动作,更改state,返回[state,dispatch],
然后基于dispatch触发不同的动作修改state
5、useMemo:解决子组件重复执行问题,缓存组件
当父组件的状态发生变化时,子组件也会重新渲染,但这是不必要的,
解决方法使用shouldUpdateMount()生命周期函数,或者useMemo可以规避
6、useCallback:缓存方法
使用场景待更新!!!(子组件回调父组件中的方法???)
7、 自定义hooks函数
使用场景:封装一些可全局共用的逻辑函数,例如根据鼠标的拖动修改窗体的大小