除了 Vue 的生命周期之外,uniapp 也有一套自己的页面生命周期 😁,它们依然和 data 等方法同级

监听页面初始化

onInit(){}

监听页面的加载

它的参数是上个页面所传递的数据,参数类型是对象类型(用于页面之间的传参)

onLoad (options) { }

监听页面的显示

页面每次出现在屏幕上都会触发,包括从下级页面点返回露出当前页面

onShow () {}

监听页面初次渲染完成

onReady () {}

监听页面的隐藏

onHide () {}

监听页面的卸载

onUnload() {}

监听窗口尺寸变化

仅支持:App、微信小程序、快手小程序

onResize () {}

监听用户下拉动作

这个相比起来是比较好玩的,因为你可以在用户做出下拉动作的同时做出一些交互,比如下拉刷新

onPullDownRefresh () {}

我们模拟一下下拉刷新:

people:[
					{
						name:'张山',
						id:101
					},
					{
						name:'李四',
						id:102
					},
					{
						name:'王五',
						id:103
					},
					{
						name:'王麻子',
						id:104
					},
					{
						name:'小瘪三',
						id:105
					}
				]

比如我们从服务器拿来这样一串用户信息,我们想要下拉刷新之后进行一个顺序的改变

onPullDownRefresh () {
			setTimeout(()=>{
				this.people = [
					
						{
							name:'李四',
							id:102
						},
						{
							name:'小瘪三',
							id:105
						},
						{
							name:'王五',
							id:103
						},
						{
							name:'张山',
							id:101
						},
						{
							name:'王麻子',
							id:104
						}
				]
				uni.stopPullDownRefresh()
			},2000)
		}

我使用一个定时器模拟一下真实的请求事件,否则刷新会很快,我们几乎看不到任何效果数据的顺序就发生了改变

uni.stopPullDownRefresh()将停止页面的刷新动作

页面滚动到底部

onReachBottom () {}

这个函数官方也指明了,并不是将页面滚动到底部,而是用于下拉刷新的,我们打开浏览器一直向下滑动不就是下拉刷新吗? 😆

这个和下拉刷新是一样的用法,当然我们也可以去设置具体滚动到的位置 – 在页面的style节点中配置 onReachBottomDistance 就可以手动配置加载下一个页面所处的位置了

{
			"path": "pages/list/list",
			"style": {
				"onReachBottomDistance": 300
			}
		}