前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uni-app实战之路-生命周期

uni-app实战之路-生命周期

作者头像
何处锦绣不灰堆
发布2020-05-29 14:57:28
1.4K0
发布2020-05-29 14:57:28
举报
文章被收录于专栏:农历七月廿一农历七月廿一

写在前面

首先说一下什么是生命周期,不管是vue还是别的什么,生命周期说人话就是页面从初始化到销毁的整个过程被称为生命周期,vue的生命周期的话我帖子之前也没写过,也不知道整天做什么呢,这都不写,一样吧,趁这次整理uni-app的机会将vue的生命周期也简单的说一下,我只能说每一个环节适合做什么,具体内部的实现原理,我这里怕是误导别人,所以就不说了,我们重点按照uni-app的官网来说,毕竟是边学边记录的。

uni-app的生命周期

我们没有进行描述之前首先要明白的是,uni-app的生命周期是氛围三部分的,分别是应用的生命周期、页面的生命周期和组件的生命周期,那么分别对应项目中哪一个文件,下面会详细的说明,然后具体有哪些用,下面也会详细描述。

应用生命周期

应用的生命周期说的就是我们的项目中的APP.vue的文件,主要包括下面几个阶段:

  • onLaunch 这个是初始化完成的时候触发,我们进行一个简单的测试就可以看的出来:
代码语言:javascript
复制
onLaunch: function(option) {
			console.info(option)
			console.log('App Launch')
		},

这个option参数你可以不加,加上做什么呢?我们可以知道我们小程序是怎么进来的,看截图的代码:

>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEcp3Vo0-1584802579658)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p159)]
>[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zEcp3Vo0-1584802579658)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p159)]

这里的scene就是代表下面的代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7PuSvVF-1584802579659)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p160)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k7PuSvVF-1584802579659)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p160)]

也就是我们说的场景值。

  • onShow

这里onshow就很奇怪了,和onLaunch是一样的,但是为什么还有有一个onshow呢?不要着急,当我们第一次启动小程序以后,确实可以看到,这里是两个状态同时显示的:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6r55Xnbe-1584802579660)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p161)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6r55Xnbe-1584802579660)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p161)]

当时当我们点击且后台的时候再看:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCUlBmoH-1584802579661)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p162)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iCUlBmoH-1584802579661)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p162)]

是不是发现只有onshow会出现,obLaunch并不会出现了!

  • 调用时机: 小程序启动,或从后台进入前台显示时触发。如果想要在小程序每次进入到前台时都执行一些事情,那么可以将代码放在这个里面。 比如一些实时动态更新的数据,用户每次进来都要从服务器更新,那么我们就可以在这个里面做。
  • onHide uni-app从前台进入后台,说人话就是看代码:
  • 调用时机:微信自身被切换到后台或者小程序暂时被切换到后台,可以在这个方法中共做一些数据的保存。 小程序从前台进入后台时触发。
  • onError uni-app脚本出错或者api调用出错的时候,没代码—
页面生命周期

页面的生命周期说的是我们的vue文件,我数了一下,一共有16个生命周期函数,这里如果一个一个的写,可能比较浪费时间,写几个比较常用的吧! 我们新建一个页面,里面啥都不做,只做生命周期的演示:test_lifecycle.vue

  • onLoad 只有第一次进来的时候才会执行
代码语言:javascript
复制
onLoad() {
			console.info("onLoad")
		},
  • 结果:onLoad
  • onShow 页面只要切换了就会执行,会执行多次,根据你的页面切换
代码语言:javascript
复制
onShow() {
			console.info("onShow")
		},
  • 结果:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmda1ORl-1584802579662)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p163)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmda1ORl-1584802579662)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p163)]

这里可以看的出来,这里只执行了一次的onLoad,但是每次我切换的时候onShow都会被执行

  • onReady 这个很有意思,我理解的是vue里面的created和mounted的关系,这个是页面挂载技术执行的,有待考究
代码语言:javascript
复制
onReady(){
			console.info("onReady")
		},
  • 结果:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqKngfjt-1584802579662)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p164)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqKngfjt-1584802579662)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p164)]
  • onHide 页面隐藏的时候执行,同样会被执行多次
代码语言:javascript
复制
onHide() {
			console.info("onHide")
		},
  • 结果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pe7Mwqv3-1584802579663)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p165)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pe7Mwqv3-1584802579663)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p165)]
  • onPullDownRefresh 这个很实用,下拉刷新,这个如果不提供的话,我们自己写的话,就比较恶心了,之前写jquery的时候就写过这个,确实恶心,这个封装好的确实不错,但是这里需要注意几点:
代码语言:javascript
复制
onPullDownRefresh() {
			console.info("onPullDownRefresh")
		},
  • 直接写是不行的,我们需要配置一个json,看文档
代码语言:javascript
复制
"globalStyle": {
		"navigationBarTextStyle": "black",
		"navigationBarTitleText": "uni-app",
		"navigationBarBackgroundColor": "#F8F8F8",
		"backgroundColor": "#F8F8F8",
		"enablePullDownRefresh" : true
	}
  • 全局样式里面的enablePullDownRefresh 设置为true,这样我们就可以直接进行下拉刷新了
  • 效果:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXSxGD4D-1584802579664)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p166)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PXSxGD4D-1584802579664)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p166)]

注意:这里如果直接全局设置的话,那么我们的每一个页面都会有这个下拉的功能,只是说不会触发该页面的函数,因为函数是独立的,那么如果我们不需要每一个都有的话,就可以直接在对应的页面下面进行设置该选项:比如说我们首页不需要下拉刷新的功能.有点意思

- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FE7ePQx1-1584802579664)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p167)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FE7ePQx1-1584802579664)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p167)]
  • onTabItemTap 切换tab的时候触发
代码语言:javascript
复制
onTabItemTap() {
			console.info("onTabItemTap")
		},
onTabItemTap(el) {
//当然,你可以直接打印出来当前页面的tab属性
			console.info(el)
		},
  • 结果:
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBzsXz9K-1584802579665)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p168)]
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBzsXz9K-1584802579665)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p168)]
  • onShareAppMessage 分享的时候触发
代码语言:javascript
复制
onShareAppMessage() {
			console.info("onShareAppMessage")
		},

-结果:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGqPikYE-1584802579666)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p169)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGqPikYE-1584802579666)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p169)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trOQwBjl-1584802579666)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p170)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-trOQwBjl-1584802579666)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p170)]

注意:这里是可以设置我们分享的一些东西的

代码语言:javascript
复制
onShareAppMessage() {
			console.info("onShareAppMessage")
			return {
				title : '惊天大新闻',
				path : 'pages/index/index',
			    imageUrl : 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1584709020708&di=f416dcf538c30a81955753ff6f7dd865&imgtype=0&src=http%3A%2F%2Fa0.att.hudong.com%2F78%2F52%2F01200000123847134434529793168.jpg'
			}
		},
  • 效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qvy48z64-1584802579667)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p171)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qvy48z64-1584802579667)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p171)]
组件生命周期
  • 这个其实就是vue的生命周期,所以这里怎么说呢,不准备继续写了
  • vue生命周期
- [vue生命周期](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91bmlhcHAuZGNsb3VkLmlvL2NvbGxvY2F0aW9uL2ZyYW1lL2xpZmVjeWNsZQ?x-oss-process=image/format,png)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F74CAAz4-1584802579668)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p172)]](https://img-blog.csdnimg.cn/20200321230035337.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDg1NDE0,size_16,color_FFFFFF,t_70)
- [vue生命周期](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91bmlhcHAuZGNsb3VkLmlvL2NvbGxvY2F0aW9uL2ZyYW1lL2xpZmVjeWNsZQ?x-oss-process=image/format,png)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F74CAAz4-1584802579668)(evernotecid://72A0867B-C2C9-4394-90F0-D1AD032DA4AC/appyinxiangcom/24072006/ENResource/p172)]](https://img-blog.csdnimg.cn/20200321230035337.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxNDg1NDE0,size_16,color_FFFFFF,t_70)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
    • uni-app的生命周期
      • 应用生命周期
      • 页面生命周期
      • 组件生命周期
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档