乐闻世界logo
搜索文章和话题

Garfish 的生命周期管理包括哪些钩子函数,它们的作用和执行顺序是什么?

2月21日 16:01

Garfish 提供了完整的生命周期管理机制,确保子应用的加载、挂载、更新和卸载过程可控且可预测。

生命周期钩子

1. bootstrap(初始化)

  • 触发时机:子应用首次加载时
  • 作用:执行子应用的初始化逻辑,如配置加载、依赖注入
  • 只执行一次:在子应用生命周期中只调用一次
  • 示例
javascript
export function bootstrap() { console.log('子应用初始化'); return Promise.resolve(); }

2. mount(挂载)

  • 触发时机:子应用需要渲染到页面时
  • 作用:将子应用渲染到指定的容器中
  • 可多次调用:每次路由切换到该子应用时都会触发
  • 示例
javascript
export function mount(container) { ReactDOM.render(<App />, container); return Promise.resolve(); }

3. unmount(卸载)

  • 触发时机:子应用需要从页面移除时
  • 作用:清理子应用的 DOM、事件监听、定时器等资源
  • 必须执行:确保完全清理,避免内存泄漏
  • 示例
javascript
export function unmount(container) { ReactDOM.unmountComponentAtNode(container); return Promise.resolve(); }

4. update(更新)

  • 触发时机:子应用需要更新时(可选)
  • 作用:处理子应用的更新逻辑
  • 非必需:不是所有子应用都需要实现
  • 示例
javascript
export function update(props) { // 处理属性更新 return Promise.resolve(); }

生命周期流程

  1. 首次加载:bootstrap → mount
  2. 路由切换:unmount(旧应用)→ mount(新应用)
  3. 重新激活:直接调用 mount(不重复 bootstrap)
  4. 完全卸载:unmount + 清理所有资源

最佳实践

  • 异步处理:所有生命周期函数都应返回 Promise
  • 错误处理:在生命周期中添加错误捕获逻辑
  • 资源清理:在 unmount 中彻底清理所有副作用
  • 性能优化:避免在 mount 中执行耗时操作
  • 状态管理:合理管理子应用的状态,避免重复初始化

通过合理使用生命周期钩子,可以确保子应用的稳定运行和资源的有效管理。

标签:Garfish