小程序开发中onload()与Onshow()有什么区别?每次进页面刷新选Onshow()吗?
小程序页面生命周期常见问题解答
1. onLoad() 与 onShow() 的核心区别
- 触发时机与次数不同
onLoad()仅在页面首次创建加载时触发1次,页面未被销毁的前提下(比如仅压入页面栈、退到后台),再次回到该页面不会重新执行。onShow()只要页面被展示到前台视口就会触发,页面生命周期内可多次执行:首次加载、从后台切回、从下级页面返回、解锁屏幕回到页面等场景都会触发。 - 可用能力不同
页面跳转携带的query参数仅能在onLoad()的回调入参中获取,onShow()没有原生的跳转参数接收能力。 - 适用场景不同
onLoad()适合放置仅需执行一次的初始化逻辑,比如页面基础结构渲染、静态资源预加载、永久缓存读取等。onShow()适合放置需要随页面展示动态更新的逻辑。
2. 每次进入页面触发刷新是否应该选择onShow()
大部分场景下该选择是合理的,但需要注意两个使用限制:
- 若刷新逻辑依赖页面跳转传入的query参数,需要先在
onLoad()阶段将参数存储到页面实例、全局状态或本地缓存中,onShow()执行时读取存储的参数即可,不要尝试直接在onShow()中拿跳转参数。 - 若刷新逻辑开销较高(如批量接口请求、大量DOM重渲染),建议增加触发条件判断:比如仅当下级页面操作会修改当前页数据时才执行刷新,或者增加节流逻辑,避免无意义的性能消耗。
以上逻辑适用于微信/支付宝等主流原生小程序,以及uni-app、Taro等跨端小程序框架的页面生命周期规则。
内容的提问来源于stack exchange,提问作者Willayuyu
相关产品推荐
相关产品推荐

