微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序

简介: 微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序

目录

H5

微信小程序

测试代码

文档


页面生命周期 https://uniapp.dcloud.net.cn/tutorial/page.html#lifecycle

组件生命周期 https://uniapp.dcloud.net.cn/tutorial/page.html#componentlifecycle

经测试,得出结论:


H5和微信小程序的生命周期函数调用顺序不一致


H5

page beforeCreate

page onLoad

page onShow

page created

page beforeMount


component beforeCreate

component created

component beforeMount

component mounted


page onReady

page mounted


微信小程序

page beforeCreate

page created

page beforeMount


component beforeCreate

component created

component beforeMount


page onLoad

page onShow


component mounted


page mounted

page onReady


一般情况下,主要使用的周期函数如下,他们的执行顺序是固定的


page onLoad


component mounted


page mounted


测试代码

页面


<template>

 <view class="page-container">

   <TestComponent></TestComponent>

 </view>

</template>


<script lang="ts">

// @ts-nocheck

import Vue from 'vue'

import type { PropType } from 'vue'

import TestComponent from './components/TestComponent.vue'


export default Vue.extend({

 components: {

   TestComponent,

 },


 props: {},


 data() {

   return {}

 },


 // 监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad

 onInit() {

   console.log('page onInit')

 },


 // 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参)

 onLoad() {

   console.log('page onLoad')

 },


 // 监听页面卸载

 onUnload() {

   console.log('page onUnload')

 },


 // 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面

 onShow() {

   console.log('page onShow')

 },


 // 监听页面隐藏

 onHide() {

   console.log('page onHide')

 },


 // 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发

 onReady() {

   console.log('page onReady')

 },


 // 监听窗口尺寸变化

 onResize() {

   console.log('page onResize')

 },


 // 监听用户下拉动作,一般用于下拉刷新

 onPullDownRefresh() {

   console.log('page onPullDownRefresh')

 },


 // 页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项

 onReachBottom() {

   console.log('page onReachBottom')

 },


 // 用户点击右上角分享

 onTabItemTap() {

   console.log('page onTabItemTap')

 },


 // 用户点击右上角分享

 onShareAppMessage() {

   console.log('page onShareAppMessage')

 },


 // 监听页面滚动,参数为Object

 onPageScroll() {

   console.log('page onPageScroll')

 },


 // 监听原生标题栏按钮点击事件,参数为Object

 onNavigationBarButtonTap() {

   console.log('page onNavigationBarButtonTap')

 },


 // 监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;

 onBackPress() {

   console.log('page onBackPress')

 },


 // 监听原生标题栏搜索输入框输入内容变化事件

 onNavigationBarSearchInputChanged() {

   console.log('page onNavigationBarSearchInputChanged')

 },


 // 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。

 onNavigationBarSearchInputConfirmed() {

   console.log('page onNavigationBarSearchInputConfirmed')

 },


 // 监听原生标题栏搜索输入框点击事件(pages.json 中的 searchInput 配置 disabled 为 true 时才会触发)

 onNavigationBarSearchInputClicked() {

   console.log('page onNavigationBarSearchInputClicked')

 },


 // 监听用户点击右上角转发到朋友圈

 onShareTimeline() {

   console.log('page onShareTimeline')

 },


 // 监听用户点击右上角收藏

 onAddToFavorites() {

   console.log('page onAddToFavorites')

 },


 // 在实例初始化之前被调用

 beforeCreate() {

   console.log('page beforeCreate')

 },


 // 在实例创建完成后被立即调用

 created() {

   console.log('page created')

 },


 // 在挂载开始之前被调用

 beforeMount() {

   console.log('page beforeMount')

 },


 // 挂载到实例上去之后调用注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档

 mounted() {

   console.log('page mounted')

 },


 // 数据更新时调用,发生在虚拟 DOM 打补丁之前。详见  仅H5平台支持

 beforeUpdate() {

   console.log('page beforeUpdate')

 },


 // 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见  仅H5平台支持

 updated() {

   console.log('page updated')

 },


 // 实例销毁之前调用。在这一步,实例仍然完全可用。详见

 beforeDestroy() {

   console.log('page beforeDestroy')

 },


 // Vue 实例销毁后调用。调用后,Vue  实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

 destroyed() {

   console.log('page destroyed')

 },


 methods: {},

})

</script>


<style></style>



组件 components/TestComponent.vue


<template>

 <view class="component-container">component</view>

</template>


<script lang="ts">

// @ts-nocheck

import Vue from 'vue'

import type { PropType } from 'vue'


export default Vue.extend({

 components: {},


 props: {},


 data() {

   return {}

 },


 // 在实例初始化之前被调用

 beforeCreate() {

   console.log('component beforeCreate')

 },


 // 在实例创建完成后被立即调用

 created() {

   console.log('component created')

 },


 // 在挂载开始之前被调用

 beforeMount() {

   console.log('component beforeMount')

 },


 // 挂载到实例上去之后调用注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档

 mounted() {

   console.log('component mounted')

 },


 // 数据更新时调用,发生在虚拟 DOM 打补丁之前。详见  仅H5平台支持

 beforeUpdate() {

   console.log('component beforeUpdate')

 },


 // 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见  仅H5平台支持

 updated() {

   console.log('component updated')

 },


 // 实例销毁之前调用。在这一步,实例仍然完全可用。详见

 beforeDestroy() {

   console.log('component beforeDestroy')

 },


 // Vue 实例销毁后调用。调用后,Vue  实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。

 destroyed() {

   console.log('component destroyed')

 },


 methods: {},

})

</script>


<style></style>

————————————————

版权声明:本文为CSDN博主「彭世瑜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/mouday/article/details/130219500

相关文章
|
20天前
|
小程序 前端开发 Java
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
JavaDog Chat v1.0.0 是一款基于 SpringBoot、MybatisPlus 和 uniapp 的简易聊天软件,兼容 H5、小程序和 APP,提供丰富的注释和简洁代码,适合初学者。主要功能包括登录注册、消息发送、好友管理及群组交流。
44 0
SpringBoot+uniapp+uview打造H5+小程序+APP入门学习的聊天小项目
|
8天前
|
小程序 开发工具
app跳转微信小程序,使用明文scheme拉起
app跳转微信小程序,使用明文scheme拉起
33 4
|
12天前
|
移动开发 小程序 JavaScript
uni-app开发微信小程序
本文详细介绍如何使用 uni-app 开发微信小程序,涵盖需求分析、架构思路及实施方案。主要功能包括用户登录、商品列表展示、商品详情、购物车及订单管理。技术栈采用 uni-app、uView UI 和 RESTful API。文章通过具体示例代码展示了从初始化项目、配置全局样式到实现各页面组件及 API 接口的全过程,并提供了完整的文件结构和配置文件示例。此外,还介绍了微信授权登录及后端接口模拟方法,确保项目的稳定性和安全性。通过本教程,读者可快速掌握使用 uni-app 开发微信小程序的方法。
36 3
|
25天前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
25天前
|
安全 JavaScript 应用服务中间件
【Azure Function App】如何修改Azure函数应用的默认页面呢?
【Azure Function App】如何修改Azure函数应用的默认页面呢?
|
18天前
|
Web App开发 Java 视频直播
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
对于软件、计算机等专业的毕业生,毕业设计需实现实用软件或APP。新颖的设计应结合最新技术,如5G时代的音视频技术。示例包括: 1. **短视频分享APP**: 集成FFmpeg实现视频剪辑功能,如添加字幕、转场特效等。 2. **电商购物APP**: 具备直播带货功能,使用RTMP/SRT协议支持流畅直播体验。 3. **同城生活APP**: 引入WebRTC技术实现可信的视频通话功能。这些应用不仅实用,还能展示开发者紧跟技术潮流的能力。
49 4
FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP
|
1月前
|
Web App开发 Android开发
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
实时数据传输在互联网中至关重要,不仅支持即时通讯如QQ、微信的文字与图片传输,还包括音视频通信。一对一通信常采用WebRTC技术,如《Android Studio开发实战》中的App集成示例;而一对多的在线直播则需部署独立的流媒体服务器,使用如SRT等协议。SRT因其优越的直播质量正逐渐成为主流。本文档概述了SRT协议的使用,包括通过OBS Studio和SRT Streamer进行SRT直播推流的方法,并展示了推流与拉流的成功实例。更多细节参见《FFmpeg开发实战》一书。
38 1
FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo
|
1月前
|
Web App开发 5G Linux
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
一年一度的毕业季来临,计算机专业的毕业设计尤为重要,不仅关乎学业评价还积累实战经验。选择紧跟5G技术趋势的音视频APP作为课题极具吸引力。这里推荐三类应用:一是融合WebRTC技术实现视频通话的即时通信APP;二是具备在线直播功能的短视频分享平台,涉及RTMP/SRT等直播技术;三是具有自定义动画特效及卡拉OK歌词字幕功能的视频剪辑工具。这些项目不仅技术含量高,也符合市场需求,是毕业设计的理想选择。
60 6
FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP
|
1月前
|
编解码 Java Android开发
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
​SRT Streamer是一个安卓手机端的开源SRT协议直播推流框架,可用于RTMP直播和SRT直播。SRT Streamer支持的视频编码包括H264、H265等等,支持的音频编码包括AAC、OPUS等等,可谓功能强大的APP直播框架。另一款APP直播框架RTMP Streamer支持RTMP直播和RTSP直播,不支持SRT协议的直播。而本文讲述的SRT Streamer支持RTMP直播和SRT直播,不支持RTSP协议的直播。有关RTMP Streamer的说明参见之前的文章《使用RTMP Streamer开启APP直播推流》,下面介绍如何使用SRT Streamer开启手机直播。
53 4
FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流
|
26天前
|
IDE Java 开发工具
探索安卓开发之旅:打造你的第一款App
【8月更文挑战第24天】在这篇文章中,我们将一起踏上激动人心的安卓开发之旅。不论你是编程新手还是希望扩展技能的老手,本文将为你提供一份详尽指南,帮助你理解安卓开发的基础知识并实现你的第一个应用程序。从搭建开发环境到编写“Hello World”,每一步都将用浅显易懂的语言进行解释。那么,让我们开始吧!