主题
生命周期
页面生命周期
提示
页面级组件既有 页面生命周期,也有 组件生命周期
页面状态:
onLoad:页面加载时触发。- 接收上一个页面传递的参数(通过
options参数),适合 初始化 页面数据
- 接收上一个页面传递的参数(通过
onShow:页面显示时触发,包括首次加载和从其他页面返回时。- 适合执行页面显示时的逻辑,如:刷新数据
onReady:页面初次渲染完成时触发。- 适合操作 DOM 或执行需要页面渲染完成后的逻辑
onHide:页面隐藏时触发,如跳转到其他页面。- 适合清理页面隐藏时的逻辑,如取消定时器
onUnload:页面卸载时触发,如关闭页面或跳转到其他页面(不会返回)。- 适合清理页面卸载时的逻辑,如释放资源
页面交互:
onPullDownRefresh:用户下拉页面时触发。- 适合实现 下拉刷新 功能
onReachBottom:页面滚动到底部时触发。- 适合实现 上拉加载 功能
onBackPress:用户点击返回按钮或 Android 物理返回键时触发。- 适合 拦截返回 操作
onTabItemTap:点击底部 tab 时触发。- 适合监听 tab 切换 事件
- ...
示例
js
import { ref, onLoad, onShow, onReady, onHide, onUnload, onPullDownRefresh, onReachBottom } from '@dcloudio/uniapp'
const xRef = ref(null)
onLoad((options) => {})
onShow(() => {})
onReady((options) => {
console.log(xRef.value)
})
onHide(() => {})
onUnload(() => {})
// 监听用户下拉动作
onPullDownRefresh(() => {
setTimeout(() => {
uni.stopPullDownRefresh() // 关闭刷新 loading
}, 1000)
})
// 页面滚动到底部时触发
onReachBottom(() => {
// 由于 onReachBottom 一段时间内不可重复触发,所以为了兼容快速向上滑动的情况,需增加一段时间的延迟,防止触底事件失效
setTimeout(() => {
// ...
}, 500)
})
// ...js
export default {
onLoad(options) {},
}组件生命周期
提示
- 组件级组件只有 组件生命周期。
- uniapp 组件支持的生命周期,与 vue 标准组件的生命周期相同。
beforeCreate:在实例初始化之前被调用。created:在实例创建完成后被立即调用。beforeMount:在挂载开始之前被调用。mounted:挂载到实例上去之后调用(处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTick)。beforeUpdate:数据更新时调用,发生在虚拟 DOM 打补丁之前。- 仅 H5 平台支持。
updated:由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。- 仅 H5 平台支持。
beforeDestroy:实例销毁之前调用(在这一步,实例仍然完全可用)。
