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

devtools/2024/11/17 15:36:55/

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.ppmy.cn/devtools/134725.html

相关文章

vue2项目中在线预览csv文件

简介 希望在项目中&#xff0c;在线预览.csv文件&#xff0c;本以为插件很多&#xff0c;结果都只是支持excel&#xff08;.xls、.xlsx&#xff09;一到.csv就歇菜。。。 关于文件预览 vue-office&#xff1a;文档、 查看在线演示demo&#xff0c;支持docx、.xlsx、pdf、ppt…

游戏引擎学习第13天

视频参考:https://www.bilibili.com/video/BV1QQUaYMEEz/ 改代码的地方尽量一张图说清楚吧,懒得浪费时间 game.h #pragma once #include <cmath> #include <cstdint> #include <malloc.h>#define internal static // 用于定义内翻译单元内部函数 #…

SQL 语句优化及编程方法

DBMS生成的执行计划在很大程度上要受到代码外部结构的影响。因此要想优化查询性能&#xff0c;就必须要知道如何写代码才能使优化器的执行效率更高。 但是&#xff0c;不能为了“效率”牺牲代码的可读性&#xff0c;要让代码清晰。 1 查询优化 在解决SQL造成的性能问题时&am…

小白进!QMK 键盘新手入门指南

经常玩键盘的伙伴应该都知道&#xff0c;现在的键盘市场可谓是百花齐放&#xff0c;已经不是之前的单一功能产品化时代。我们可以看到很多诸如&#xff1a;机械轴键盘、磁轴键盘、光轴键盘、电感轴键盘&#xff0c;以及可能会上市的光磁轴键盘&#xff0c;更有支持屏幕的、带旋…

分布式微服务项目,同一个controller不同方法间的转发导致cookie丢失,报错null pointer异常

源码&#xff1a; /***添加商品进入购物车*/ GetMapping("/addToCart") public String addToCart(RequestParam("num") Integer num, RequestParam("skuId") Long skuId, RedirectAttributes redirectAttributes) {System.out.println("nu…

React 中 为什么多个 JSX 标签需要被一个父元素包裹?

为什么多个 JSX 标签需要被一个父元素包裹&#xff1f; JSX 虽然看起来很像 HTML&#xff0c;但在底层其实被转化为了 JavaScript 对象&#xff0c;你不能在一个函数中返回多个对象&#xff0c;除非用一个数组把他们包装起来。这就是为什么多个 JSX 标签必须要用一个父元素或者…

15-1.Java 网络编程之 InetAddress(InetAddress 常用静态方法、InetAddress 常用方法)

InetAddress 概述 InetAddress 用于表示一个 IP 地址&#xff08;IPv4 / IPv6&#xff09; InetAddress 提供了获取主机名、获取 IP 地址等一系列方法 其中 Inet 是 Internet 的缩写&#xff0c;代表因特网 一、InetAddress 常用静态方法 1、基本介绍 方法说明InetAddress…

【python】掌握 Flask:轻量级 Web 开发框架解析

【Python】掌握 Flask&#xff1a;轻量级 Web 开发框架解析 引言 Flask 是一个轻量级、灵活且广受欢迎的 Python Web 开发框架。它以其简单易用、模块化和强大的扩展功能而闻名&#xff0c;适合用于小型应用和快速原型设计。同时&#xff0c;Flask 提供了一系列工具和库&…