React中的生命周期钩子

216 阅读2分钟

在 React 中,生命周期钩子是组件在其生命周期中的不同阶段所触发的函数。在 React 16.3 之前,常用的生命周期钩子有:

  • componentWillMount: 组件挂载前触发
  • componentDidMount: 组件挂载后触发
  • componentWillReceiveProps: 组件接收新的 props 时触发
  • shouldComponentUpdate: 组件是否需要更新时触发
  • componentWillUpdate: 组件更新前触发
  • componentDidUpdate: 组件更新后触发
  • componentWillUnmount: 组件卸载前触发

从 React 16.3 开始,引入了新的生命周期钩子,并逐渐废弃了一些旧的钩子:

  • getDerivedStateFromProps: 用于替换 componentWillReceiveProps,在组件接收新的 props 或 state 变化时触发
  • getSnapshotBeforeUpdate: 在组件更新前获取一个值,该值会作为参数传递给 componentDidUpdate
  • componentDidCatch: 用于捕获组件内部的错误

此外,React Hooks 提供了一些与生命周期钩子相关的函数:

  • useState: 用于在函数组件中使用 state
  • useEffect: 用于在函数组件中处理副作用,可以看作是 componentDidMountcomponentDidUpdatecomponentWillUnmount 的结合
  • useContext: 用于在函数组件中使用 context
  • useReducer: 用于在函数组件中使用类似于 Redux 的状态管理
  • useCallback: 用于在函数组件中缓存函数
  • useMemo: 用于在函数组件中缓存计算结果
  • useRef: 用于在函数组件中创建和访问 refs
  • useImperativeHandle: 用于在函数组件中自定义暴露给父组件的实例值
  • useLayoutEffect: 类似于 useEffect,但它会在 DOM 更新后同步执行副作用函数
  • useDebugValue: 用于在 React 开发者工具中显示自定义 hook 的标签

在 Kumi API 中,微应用的生命周期钩子包括:

  • onLaunch: 微应用初始化时触发
  • onLoad: 微应用挂载前触发
  • onReady: 微应用挂载完成时触发
  • onUnload: 微应用卸载前触发
  • onShow: 微应用展示时触发(在基座中为多页签切换时,独立运行时为浏览器标签切换时)
  • onHide: 微应用隐藏时触发(在基座中为多页签切换时,独立运行时为浏览器标签切换时)

这些生命周期函数需要在 src/app.ts 中声明。