【Uniapp】三、生命周期及路由

这篇具有很好参考价值的文章主要介绍了【Uniapp】三、生命周期及路由。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 UniAPP 生命周期

学习一个工具的目的核心是什么?是为了解决核心业务逻辑问题,业务逻辑很多时候简单的解释一句话:“在合适的时机干合适的事情”,OK!什么是合适的时机呢?简单的说,页面运行过程中,各个阶段的回调函数就是页面中的时机,我们也叫这个为“生命周期钩子函数”,当然,业务中我们也会写到很多「回调」的逻辑,这些回调其实也是咱们自定义的时机,UniAPP 的生命周期钩子函数回调函数有哪些呢?我们来理解一下!

uni-app 完整支持 Vue 实例的生命周期,同时还新增 应用生命周期 及 页面生命周期。

1)应用生命周期

函数名 说明
onLaunch uni-app 初始化完成时触发(全局只触发一次)
onShow uni-app 启动,或从后台进入前台显示
onHide uni-app 从前台进入后台
onError uni-app 报错时触发
onUniNViewMessage nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯
onUnhandledRejection 对未处理的 Promise 拒绝事件监听函数(2.8.1+)
onPageNotFound 页面不存在监听函数
onThemeChange 监听系统主题变化

2) 页面生命周期

uni-app会将pages.json -> pages配置项中的第一个页面,作为当前工程的首页(启动页)。

#页面生命周期

函数名 说明
onLoad 监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参),参考示例
onShow 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
onReady 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
onHide 监听页面隐藏
onUnload 监听页面卸载
onResize 监听窗口尺寸变化
onPullDownRefresh 监听用户下拉动作,一般用于下拉刷新,参考示例
onReachBottom 页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项
onTabItemTap 点击 tab 时触发,参数为Object,具体见下方注意事项
onShareAppMessage 用户点击右上角分享
onPageScroll 监听页面滚动,参数为Object
onNavigationBarButtonTap 监听原生标题栏按钮点击事件,参数为Object
onBackPress 监听页面返回
onNavigationBarSearchInputChanged 监听原生标题栏搜索输入框输入内容变化事件
onNavigationBarSearchInputConfirmed 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。
onNavigationBarSearchInputClicked 监听原生标题栏搜索输入框点击事件
onShareTimeline 监听用户点击右上角转发到朋友圈
onAddToFavorites 监听用户点击右上角收藏

3) 组件生命周期

uni-app组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期:

2 UniAPP 路由配置及页面跳转

1)路由配置

uni-app 页面路由全部交给框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式(类似小程序在app.json中配置页面路由)。

"pages": [
		{
			"path": "pages/index",
			"style": {
				"navigationBarTitleText": "路由配置index",
				"navigationBarBackgroundColor": "#FFFFFF",
				"navigationBarTextStyle": "black",
				"backgroundColor": "#FFFFFF",
				"enablePullDownRefresh": true
			}
		},
		{
			"path": "pages/user",
			"style": {
				"navigationBarTitleText": " 路由配置user",
				"navigationBarBackgroundColor": "#FFFFFF",
				"navigationBarTextStyle": "black",
				"backgroundColor": "#FFFFFF",
				"enablePullDownRefresh": true
			}
		}
]

2)路由跳转

uni-app 有两种页面路由跳转方式:使用navigator组件跳转(标签式导航)、调用API跳转(编程式导航)

框架以栈的形式管理当前所有页面, 当发生路由切换的时候,页面栈的表现如下:

路由方式 页面栈表现 触发时机
初始化 新页面入栈 uni-app 打开的第一个页面
打开新页面 新页面入栈 调用 API uni.navigateTo
使用组件 <navigator open-type="navigate" />
页面重定向 当前页面出栈,新页面入栈 调用 API uni.redirectTo 、
使用组件
页面返回 页面不断出栈,直到目标返回页 调用 API uni.navigateBack 、
使用组件 、
用户按左上角返回按钮、安卓用户点击物理back按键
Tab 切换 页面全部出栈,只留下新的 Tab 页面 调用 API uni.switchTab 、
使用组件 、
用户切换 Tab
重加载 页面全部出栈,只留下新的页面 调用 API uni.reLaunch 、
使用组件

3)获取当前页面栈

getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
注意: getCurrentPages() 仅用于展示页面栈的情况,请勿修改页面栈,以免造成页面状态错误。
每个页面实例的方法属性列表如下:

方法 描述 平台说明
page.$getAppWebview() 获取当前页面的webview对象实例 5+App
page.route 获取当前页面的路由 -

uni-appgetCurrentPages()获得的页面里内置了一个方法 $getAppWebview() 可以获取当前页面的webview对象实例,从而获得 webview 的 style、id等属性,也可设置 webview 的 style。

4)路由传参与接收

说明:页面生命周期的onLoad()监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参)。如:

  • 页面 1 传递参数
//页面跳转并传递参数
uni.navigateTo({
    url: 'page2?name=liy&message=Hello'
});

url为将要跳转的页面路径 ,路径后可以带参数。参数与路径之间使用?分隔,参数键与参数值用=相连,不同参数用&分隔。如 ‘path?key1=value2&key2=value2’,path为下一个页面的路径,下一个页面的onLoad函数可得到传递的参数。

  • 页面 2 接收参数
onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数
        console.log(option.name); //打印出上个页面传递的参数。
        console.log(option.message); //打印出上个页面传递的参数。
    }

注意:url有长度限制,太长的字符串会传递失败,可使用窗体通信、全局变量,或encodeURIComponent等多种方式解决。

5)小程序路由分包配置

因小程序有体积和资源加载限制,各家小程序平台提供了分包方式,优化小程序的下载和启动速度。

所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据pages.json的配置进行划分。

在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,会把对应分包自动下载下来,下载完成后再进行展示。此时终端界面会有等待提示。

"subPackages": [
  	{
			"root": "news",
			"pages": [{
					"path": "index",
					"style": {
						"navigationBarTitleText": "金迅教育 · 新闻中心",
						"navigationBarBackgroundColor": "#FFFFFF",
						"navigationBarTextStyle": "black",
						"backgroundColor": "#FFFFFF"
					}
				}
			]
		},

		{
			"root": "activities",
			"pages": [{
					"path": "index",
					"style": {
						"navigationStyle": "custom",
						"enablePullDownRefresh": true
					}
				},
				{
					"path": "userList",
					"style": {
						"navigationBarTitleText": "金迅教育 · 活动报名",
						"navigationBarBackgroundColor": "#FFFFFF",
						"navigationBarTextStyle": "black",
						"backgroundColor": "#FFFFFF",
						"enablePullDownRefresh": true
					}
				}
			]
		}
]// 预下载分包设置
"preloadRule": {
		"pages/index": {
			"network": "all",
			"packages": ["activities"]
		}
}

总结

到这里,我们已经了解了Uniapp中app、页面、组件的生命周期,并且熟悉了路由跳转、路由传参等内容,到这里,大家就可以动手自己进行unpapp小程序项目的开发工作了。
欢迎大家在评论区留言一起解决,如果这篇文章对你有所帮助就点个赞吧👍文章来源地址https://www.toymoban.com/news/detail-493014.html

到了这里,关于【Uniapp】三、生命周期及路由的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【uniapp】学习之【生命周期】

    uniapp生命周期 uni-app框架的生命周期分为两种 : 应用中的生命周期 和 页面内的生命周期 uni-app 应用生命周期 uni-app 页面生命周期

    2024年02月12日
    浏览(29)
  • uniapp中小程序的生命周期

    一、uni-app应用生命周期 函数名 说明 onLuaunch 当uni-app 初始化完成时触发(全局只触发一次) onShow 当 uni-app 启动,或从后台进入前台显示 onHide 当 uni-app 从前台进入后台 onError 当 uni-app 报错时触发 onUniNViewMessage 对 nvue 页面发送的数据进行监听 onUnhandledRejection 对未处理的 Prom

    2024年02月11日
    浏览(40)
  • 小程序开发.uniapp.生命周期

    小程序开发.uniapp.生命周期 【内容介绍】: uniapp中生命周期相关内容 相关文章推荐: 标题 链接 《小程序开发.概述与环境搭建》 https://blog.csdn.net/qq_28550263/article/details/125860530 《小程序开发.mpvue.架构简介》 https://blog.csdn.net/qq_28550263/article/details/125881363 《VUE实例及其生命周期

    2024年02月11日
    浏览(46)
  • 关于uniapp和Vue的生命周期

    前端的升命周期一般指的是,一个页面、一个网站从创建开始,到应用关闭,走过的一个流程。就像人的一生一样,从出生,到工作,到死去。 生命周期的意义在于,可以实时把控住页面等对象在生命周期的各个过程中的状态。 比如一个页面,在创建前会调用beforeCreat方法,

    2024年02月08日
    浏览(31)
  • uniapp 微信小程序:页面+组件的生命周期顺序

    这个uniapp的微信小程序项目使用的是 VUE2 首页只提供了一个跳转按钮。 虽然文档中将页面与组件的生命周期分开罗列,但是我们在页面和组件中所有的生命周期函数都加上,看下效果: uniap 页面生命周期 uniapp 组件生命周期

    2024年02月15日
    浏览(27)
  • django请求生命周期流程图,路由匹配,路由有名无名反向解析,路由分发,名称空间

    浏览器发起请求。 先经过网关接口,Django自带的是wsgiref,请求来的时候解析封装,响应走的时候打包处理,这个wsgiref模块本身能够支持的并发量很少,最多1000左右,上线之后会换成uwsgi,并且还会加nginx。   往后就到Django框架了,先经过中间件,中间件处理请求。 再到路由

    2024年02月21日
    浏览(36)
  • HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参

    允许在生命周期函数中使用 Promise 和异步回调函数,比如网络资源获取,定时器设置等; 即被@Entry 装饰的组件生命周期,提供以下生命周期接口: onPageShow 页面加载时触发,页面每次显示时触发一次,包括路由过程、应用进入前台等场景。 onPageHide 从第一个页面跳转第二个

    2024年01月21日
    浏览(31)
  • 前端(九)——探索微信小程序、Vue、React和Uniapp生命周期

    🙂博主:小猫娃来啦 🙂文章核心: 探索微信小程序、Vue、React和Uniapp生命周期 微信小程序: 微信小程序是一种基于微信平台的应用程序,可以在微信内部直接使用,无需下载安装。它采用前端技术构建,包括HTML、CSS和JavaScript,并且可以调用微信提供的API进行功能扩展。微

    2024年02月15日
    浏览(28)
  • #Uniapp:uni-app中vue2生命周期--11个

    uni-app中vue2生命周期 生命周期钩子 描述 H5 App端 小程序 说明 beforeCreate 在实例初始化之后被调用 详情 √ √ √ created 在实例创建完成后被立即调用 详情 √ √ √ beforeMount 在挂载开始之前被调用 详情 √ √ √ mounted 挂载到实例上去之后调用 详情 注意:此处并不能确定子组件

    2024年02月02日
    浏览(39)
  • uniapp onLoad生命周期 uni.$on接受参数无法改变data数据解决办法

    问题阐述: 用以上写法来跨页面传参会发现在b页面,虽然能够接受到参数但是赋值到data时候没生效,虽然控制台能够打印出数据,但是页面上面并不会动态改变。用setTimeout包裹也没有用 如果想要用$emit和 $on来跨页面传参,只适合以下情况 如果想要实现a-b传值可以这样

    2024年02月10日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包