小程序和vue页面生命周期

Posted 把我当做一棵树叭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序和vue页面生命周期相关的知识,希望对你有一定的参考价值。

小程序应用生命周期

我们知道小程序有应用生命周期和页面生命周期

在App.vue中可以监听应用生命周期:

  • onLaunch
  • onShow
  • onHide
  • onError
  • onUniNViewMessage

页面生命周期

  • onLoad
  • onShow
  • onReady
  • onHide
  • onUnload
  • ...

而这其中有几种情况需要注意

1.小程序从前台进入后台,再从后台进入前台生命周期变化

  • 页面onHide
  • 小程序onHide
  • 小程序onShow
  • 页面onShow

2.结合vue生命周期,一个非tabbar页面的具体周期先后顺序如下

  • beforeCreate
  • created
  • beforeMount
  • onLoad
  • onShow
  • mounted
  • onReady
  • beforeUpdate
  • updated
  • onUnload
  • beforeDestroy
  • destoryed

3.父子组件生命周期

  • 父beforeCreate
  • 父created
  • 父beforeMount
  • 子beforeCreate
  • 子created
  • 子beforeMount
  • 父onLoad
  • 父onShow
  • 子mounted
  • 父mounted
  • 父onReady

4.tabbar页面

一般情况下tabbar页面不会经历onUnload和beforeDestroy和destroyed,可以理解为tabbar页面是缓存模式,在tabbar页面的互相切换中,上一个tabbar页面出栈,下一个进栈

5.onLoad获取页面传递参数

		onLoad(o) {
			console.log(o)
			this.type = Number.parseInt(o.type);
                }

6.mounted和onReady修改data会触发beforeUpdate和updated生命周期

7.beforeDestroy时还能获取vue实例

8.onPullDownRefresh()

下拉刷新,需要在页面的配置文件中配上

		{
			"path": "pages/device/deviceList/deviceList",
			"style": {
				"navigationBarTitleText": "设备管理",
				"enablePullDownRefresh": true,
				"backgroundTextStyle": "dark"
			}
		},

完成刷新后要关闭刷新状态uniapp下用uni.stopPullDownRefresh()

9.onReachBottom()

触底加载,基本是列表页面触底加载下一页

页面栈

getCurrentPages()获取

let pages = getCurrentPages()
console.log(pages)
console.log(pages[pages.length-1]) //拿到上一页

 

因此息息相关的就是页面跳转方法

uni.redirectTo()关闭当前页面,跳转到应用内的某个页面。当前页出栈

uni.reLaunch()关闭所有页面,打开到应用内的某个页面。

uni.switchTab()跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。

列表页面

有四种情况:

1.初始化加载页面,只用page,size请求

2.下拉刷新list(可能带查询条件)或者查询条件下搜索list

		// 下拉刷新
		onPullDownRefresh() {
			this.param.page = 1
			this.getList(2)
		},
                 
methods: {
// 初始化请求参数
initParam(){
this.param.page = { page:1,size:20 }
},
// 搜索 search() { this.initParam() let obj = { ...this.searchParam} Object.assign(this.param, obj) //查询条件拼接 this.getList(1) }, }

3.触底加载下一页数组list等于之前的list拼接请求接口拿到的下一页数据

		// 触底加载下一页
		onReachBottom() {
			if (!this.pagMsg.last) {
				this.param.page++
				this.getList(3)
			}
		},

4.在list页面对某一项进行删除,重新渲染已经拿到的数组内容。业务场景为触底刷新了4次,即你在第4页了,此时删除列表中的一个item,数组要做相应的更新而你还在第4页;或者你改变了第四页列表中item的一个字段,要做相应更新。此时直接拿四页的列表。

// 不能直接改param
let param = { ...this.param} param.size *= param.page param.page = 1 this.getList(4, param)

getList()方法

			// 获取列表,type填1为正常初始化加载页面;type填2为下拉加载,加载成功要停止当前页面下拉刷新;type填3为触底加载下一页数组拼接,type填4时为处理时使用,有第二个参数
			getList(type, obj) {
				this.more = \'loading\' // 是否有更多数据提示的flag,这一行可以无视
				let param = (type === 4) ? obj : this.param
				this.$urlRequest(this.$baseUrl.test, param, \'post\').then(res => {
					if (res.data.success) {
						if (type !== 3) {
							this.swipeList = res.data.data.content
							if (type === 2) {
								uni.stopPullDownRefresh()
							}
						} else {
							this.swipeList = this.swipeList.concat(res.data.data.content)
						}
						this.pagMsg = res.data.data
						this.more = (this.pagMsg.last || this.pagMsg.totalPage === 0) ? \'noMore\' : \'more\'  //可无视
					} else {
						uni.showToast({
							icon: \'none\',
							title: res.data.msg,
							duration: 1500
						});
					}
				})
			},

  

以上是关于小程序和vue页面生命周期的主要内容,如果未能解决你的问题,请参考以下文章

只会Vue怎么开发小程序?Vue和微信小程序的到底有哪些区别?

vue和微信小程序的区别比较

Vue 和微信小程序的区别比较

vue和微信小程序的区别比较

vue和微信小程序的区别比较

理解mpvue的生命周期