当前位置: 首页 > article >正文

UniApp 应用、页面与组件的生命周期详解

UniApp 应用、页面与组件的生命周期详解

uni-app中包含了 应用生命周期、页面生命周期、和组件生命周期( Vue.js的)函数。

应用生命周期

应用生命周期仅可在App.vue中监听,在其它页面监听无效。

<script>
	export default {
		onLaunch: function() {
			console.log('onLaunch:应用初始化完成,全局触发一次');
		},
		onShow: function() {
			console.log('onShow:应用从后台进入前台,多次');
		},
		onHide: function() {
			console.log('onHide:应用从前台进入后台,多次');
		},
		onError:function(err){
			console.log('onError:监听页面异常', err);
		}
	}
</script>

UniApp 应用、页面与组件的生命周期详解
应用从前台进入后台UniApp 应用、页面与组件的生命周期详解
报错监听:

	<button type="button" @click="clickHandler">点击报错</button>
	clickHandler(){
		const i = 1;
		i = 10;
	}

效果,常量不能改变值,会报错,相应的会监听到:
UniApp 应用、页面与组件的生命周期详解

页面生命周期

uniapppages.json中配置的页面才有一下页面生命周期函数,子组件中没有这些函数

  • onLoad:监听页面加载,其参数为上个页面传递的数据,参数类型为Object用于页面传参。
  • onShow:监听页面显示,页面每次出现在屏幕上都会触发,包括从下级页面返回露出当前页面。
  • onReady:监听页面初次渲染完成,注意,如果渲染速度加快,会在页面进入动画前完成出发。
  • onHide:监听页面隐藏。
    -onUnload:页面卸载函数,当前页面从内存中关闭显示。
    -onResize:当窗口屏幕变化,横屏竖屏的时候。
onLoad() {
		console.log("监听页面加载,一般用于初始化页面数据,进入页面时调用一次")
},	
onShow() {
	console.log("监听页面显示,页面出现在屏幕上就会被触发")
},
onReady() {
	console.log("监听页面出事渲染完成")
},
onHide() {
	console.log("页面隐藏")
},

效果:
UniApp 应用、页面与组件的生命周期详解
通过uni.reLaunch()进行跳转,并且关闭内存中的所有页面

onUnload(){
	console.log("页面卸载")
},

UniApp 应用、页面与组件的生命周期详解
窗口横屏监听函数:

onResize() {
	console.log("窗口已变化")
},

组件生命周期

uniapp组件支持的生命周期,与vue标准生命周期相同,这里没有页面级的onLoad等生命周期,一般在子组件使用,当然页面中也可以使用的。

  • beforeCreate:在实例初始化之后被调用。
  • created:在实例创建完成后被立即调用。
  • beforeMount:在挂在开始之前被调用。
  • mounted:挂在到实例上去之后调用,并不能确定子组件被全部挂在,如果需要子组件完全挂载之后在执行操作可以使用$nextTick
  • beforeUpdate:数据更新时调用,发生在虚拟DOM不定之前。
  • updated由于数据更改导致虚拟DOM重新渲染和打补丁,在这时候会调用该钩子。
  • beforeDestroy:实例销毁之前调用,到了这个生命周期时候,实例完全可以使用。
  • destroyedvue实例销毁后调用,调用后,vue实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

总结:

只要是 vue.nvue就可以使用组件生命周期函数,但是页面生命周期函数只能在pages选项中注册了作为页面时才可以使用。应用生命周期函数只能在App.vue文件中使用。


http://www.kler.cn/a/393875.html

相关文章:

  • 设计模式之工厂模式,但是宝可梦
  • Ubuntu配置阿里云docker apt源
  • 2024年11月12日Github流行趋势
  • C++编程技巧与规范-类和对象
  • HarmonyOS 如何实现传输中的数据加密
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • Codeforces Round 984 (Div. 3)
  • 【Ubuntu pip安装mpi4py时报错】
  • 基于单片机的客车载客状况自动检测系统(论文+源码)
  • 从0开始深度学习(29)——文本预处理
  • golang通用后台管理系统08(菜单路由数据vue对接)
  • 科技查新小知识
  • 算法求解 -- (炼码 3854 题)计算满足条件的好二进制字符串数量
  • 基于SSM(Spring + Spring MVC + MyBatis)框架开发的电能计量与客服服务管理系统
  • 蓝队基础1
  • curl 安装最新版
  • 在 Spring Boot 中实时监控 Redis 命令流
  • 基于Java高校排课系统
  • Thread类及常见方法
  • 【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)
  • 实现API接口的自动化
  • PostgreSQL 开启密码验证插件
  • Spring-Webflux + Reactor + Netty 初体验
  • LeetCode【0017】电话号码的字母组合
  • Docker 基础命令介绍和常见报错解决
  • scala 迭代更新