真实面经题目 · 原创解析
小程序生命周期,生命周期内都做什么?
这题考察是否能按 App、Page、Component 三层说明生命周期职责,并把初始化、显示刷新、渲染完成和资源清理放在正确阶段。
真实面经题目 · 原创解析
这题考察是否能按 App、Page、Component 三层说明生命周期职责,并把初始化、显示刷新、渲染完成和资源清理放在正确阶段。
小程序生命周期要分三层回答。App 层的 onLaunch 做一次性初始化,onShow/onHide 处理应用前后台切换;Page 层的 onLoad 读取路由参数并做首次初始化,onShow 处理每次进入页面都要刷新的数据,onReady 表示首次渲染完成,onHide/onUnload 分别处理页面隐藏和销毁;Component 层的 created/attached/ready/detached 管内部状态、挂载后的查询和资源释放。实际开发中,首屏数据、订阅、定时器、全局状态和页面缓存都要按生命周期边界放置,否则容易重复请求、内存泄漏或返回页面数据不刷新。
App 生命周期描述应用整体,Page 生命周期描述路由页面,Component 生命周期描述可复用组件。回答时先分层,再讲每个阶段适合做什么,比背一串函数名更有价值。
onLaunch 适合读取本地登录态、初始化 SDK、拉取基础配置和建立全局 store。onShow/onHide 更适合处理前后台切换,例如恢复埋点会话、刷新红点、暂停或恢复全局任务。
onLoad 只在页面实例创建时执行,适合解析 options、初始化页面状态和发起首屏请求。onShow 每次页面可见都会执行,适合从详情页返回后刷新列表、检查登录态和重建临时订阅。
onReady 表示首次渲染完成,适合做节点查询、创建 canvas 或依赖 DOM 尺寸的逻辑。onHide 是暂时不可见,onUnload 是页面销毁,定时器、事件监听、WebSocket 订阅和外部资源要按生命周期清理。
created 阶段不要依赖页面节点;attached 表示组件进入页面树,适合初始化和订阅;ready 后可安全做布局查询;detached 必须释放组件自己的监听器、定时器和异步副作用。
不要把所有请求都塞进 onShow,也不要把依赖路由参数的初始化放到组件内部猜测。页面负责参数和业务数据,组件通过 properties 接收输入,通过事件把交互结果传出去。
onLoad 是页面实例创建时执行一次,适合解析路由参数和首次初始化;onShow 是每次页面显示都会执行,适合返回刷新和前台恢复。
不完全一样。onHide 是暂时隐藏,可以暂停轮询和动画;onUnload 是页面销毁,要彻底移除监听、清空定时器和释放页面级资源。
通常要等到 ready 之后,因为 created/attached 阶段不保证视图层完成渲染。依赖布局尺寸的逻辑不要过早执行。
onShow 会在返回页面、切前台等场景重复触发,容易导致重复请求和闪动。只有每次可见都必须更新的数据才适合放 onShow。