Skip to content

hook

useEffect

接受两个参数:一个是副作用函数,另一个是一个依赖数组(可选)

  • 异步执行,数据获取、订阅或者手动修改过 DOM 副作用
  • React 会在每次渲染后调用副作用函数 —— 包括第一次渲染的时候
  • 副作用函数还可以通过返回一个函数来指定如何“清除”副作用
  • useEffect 调用发生在每轮渲染后,每次运行effect的同时,DOM都已经更新完毕了
  • useEffect 与 componentDidMount componentDidUpdate 不同,不会阻塞浏览器更新

模拟 componentDidMount componentWillUnmount

js
useEffect(() => {
// DidMount
  return () => {
  // willUnmount
  }
}, [])
useEffect(() => {
// DidMount
  return () => {
  // willUnmount
  }
}, [])

模拟 componentDidUpdate

js
useEffect(() => {
// componentUpdate
})
useEffect(() => {
// componentUpdate
})

useLayoutEffect

同步执行,等价于生命周期函数

useMemo

返回一个 memoized 值(有缓存的值)

useCallback

返回一个 memoized 函数(有缓存的函数) 经常和 useRef 一起使用

useRef

返回一个可变的 ref对象 .current 对应dom节点

useImperativeHandle

暴露组件中的ref,提供给父组件调用 (需要和 forwardRef 一起使用)