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

这篇具有很好参考价值的文章主要介绍了微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文档

  • 页面生命周期 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文章来源地址https://www.toymoban.com/news/detail-720021.html

<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>

到了这里,关于微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app 返回上一个页面并传递参数(微信小程序)

    方法一 问题: 会记住每次返回. 并在下次获取参数时把所有的返回监听进行 全部返回 ( 不确定别人使用时是否会出现此问题 ) 打印示例结果如下: 打印说明: 获取用户信息1: 为每次进入第二个页面 (onload) 请求的数据 监听到事件来自返回的参数: 为第一个页面监听获取的数据 方

    2024年02月09日
    浏览(56)
  • uni-app框架 微信小程序页面显示正常,但安卓页面样式显示异常

    今天在继续复习uni-app项目时,使用模拟器运行时,突然发现封装的search组件样式无法正常显示,但是小程序页面又是正常的,打包后真机也是一样的结果。在uni-app的控制台报如下错误: [Vue warn]: Error in render: “TypeError: Cannot read property ‘children’ of undefined” TypeError: Cannot rea

    2024年04月11日
    浏览(42)
  • uni-app微信小程序,在页面顶部添加返回按键,返回上一个页面

    1.示例: 2.实现方式: 在page.json文件中的style里添加如下代码: 3.tips: 在page.json中的页面顺序就是小程序加载过程中的页面顺序

    2024年02月12日
    浏览(33)
  • uni-app 微信小程序之好看的ui登录页面(一)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(40)
  • uni-app 微信小程序之好看的ui登录页面(五)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(38)
  • uni-app 微信小程序之好看的ui登录页面(三)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年01月15日
    浏览(37)
  • uni-app 微信小程序之好看的ui登录页面(四)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月04日
    浏览(30)
  • uni-app 微信小程序之好看的ui登录页面(二)

    更多登录ui页面 uni-app 微信小程序之好看的ui登录页面(一) uni-app 微信小程序之好看的ui登录页面(二) uni-app 微信小程序之好看的ui登录页面(三) uni-app 微信小程序之好看的ui登录页面(四) uni-app 微信小程序之好看的ui登录页面(五)

    2024年02月03日
    浏览(32)
  • Uni-app实现左右滑动页面内容切换(兼容微信小程序)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档         前言         整体思路         一、HTML部分         二、Script部分         三、Style部分           (先声明哦我可不是偷懒,只是想学术借鉴一下)因为最近有在做左右滑动功能,

    2024年02月07日
    浏览(53)
  • uni-app 微信小程序启用组件按需注入

    uni-appi 微信小程序开发,微信小程序开发工具代码质量检查显示 启用组件按需注入:未通过 。 通过官方文档可知,微信小程序自基础库版本2.11.1起,小程序支持有选择地注入必要的代码,以降低小程序的启动时间和运行时内存。配置方法如下: 添加配置 在 manifest.json 配置

    2024年02月12日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包