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

在Vue中,onLoad,onShow ,mounted的区别

1. onLoad

  • 触发时机:页面首次加载时触发,且只会触发一次。

  • 适用场景:适合在页面加载时执行一次性操作,比如获取页面参数、初始化数据、发送请求等。

  • 特点

    • 可以接收页面传递的参数(通过 options 对象)。

    • 是 UniApp 页面生命周期钩子,不是 Vue 组件的钩子。

示例代码

javascript

export default {
  onLoad(options) {
    console.log('页面加载,参数为:', options);
    // 初始化数据
    this.loadData();
  },
  methods: {
    loadData() {
      console.log('加载数据...');
    }
  }
}

2. onShow

  • 触发时机:页面显示时触发,包括页面首次加载和从其他页面返回时。

  • 适用场景:适合在页面每次显示时执行操作,比如刷新数据、更新状态等。

  • 特点

    • 无法直接接收参数,但可以通过全局变量或缓存传递数据。

    • 是 UniApp 页面生命周期钩子,不是 Vue 组件的钩子。

示例代码

javascript

export default {
  onShow() {
    console.log('页面显示');
    // 刷新数据
    this.refreshData();
  },
  methods: {
    refreshData() {
      console.log('刷新数据...');
    }
  }
}

3. mounted

  • 触发时机:Vue 组件挂载到 DOM 中后触发。

  • 适用场景:适合在组件挂载完成后操作 DOM 或执行依赖 DOM 的逻辑,比如初始化第三方库、获取 DOM 元素等。

  • 特点

    • 是 Vue 组件的生命周期钩子,不是 UniApp 页面的钩子。

    • 在 UniApp 中,mounted() 通常用于组件,而不是页面。

示例代码

vue

<template>
  <view>
    <text ref="myText">Hello UniApp</text>
  </view>
</template>

<script>
export default {
  mounted() {
    console.log('组件已挂载');
    // 操作 DOM
    const textElement = this.$refs.myText;
    console.log('文本内容:', textElement.textContent);
  }
}
</script>

4. 三者的区别总结

特性onLoadonShowmounted
触发时机页面首次加载时触发页面显示时触发(包括首次和返回)组件挂载到 DOM 后触发
适用对象UniApp 页面UniApp 页面Vue 组件
参数接收通过 options 接收页面参数无法直接接收参数无法直接接收参数
使用场景初始化数据、获取页面参数刷新数据、更新状态操作 DOM、初始化第三方库

5. 综合示例

假设我们有一个页面,需要实现以下功能:

  1. 页面加载时获取参数并初始化数据。

  2. 页面显示时刷新数据。

  3. 组件挂载后操作 DOM。

代码实现

vue

<template>
  <view>
    <text ref="myText">{{ message }}</text>
    <button @click="navigateToOtherPage">跳转到其他页面</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello UniApp'
    };
  },
  onLoad(options) {
    console.log('页面加载,参数为:', options);
    this.loadData();
  },
  onShow() {
    console.log('页面显示');
    this.refreshData();
  },
  mounted() {
    console.log('组件已挂载');
    const textElement = this.$refs.myText;
    console.log('文本内容:', textElement.textContent);
  },
  methods: {
    loadData() {
      console.log('加载数据...');
      // 模拟初始化数据
      this.message = '数据已加载';
    },
    refreshData() {
      console.log('刷新数据...');
      // 模拟刷新数据
      this.message = '数据已刷新';
    },
    navigateToOtherPage() {
      uni.navigateTo({
        url: '/pages/otherPage/otherPage'
      });
    }
  }
};
</script>

6. 运行逻辑

  1. 页面加载时

    • 触发 onLoad,获取参数并初始化数据。

    • 触发 mounted,组件挂载完成,操作 DOM。

  2. 页面显示时

    • 触发 onShow,刷新数据。

  3. 从其他页面返回时

    • 再次触发 onShow,刷新数据。


7. 总结

  • onLoad:页面加载时执行一次性操作。

  • onShow:页面显示时执行刷新操作。

  • mounted:组件挂载后操作 DOM 或执行依赖 DOM 的逻辑。


文章转载自:

http://BCZsGjLn.pngdc.cn
http://POeb6d2j.pngdc.cn
http://0M6HGdHi.pngdc.cn
http://FnlJMg1l.pngdc.cn
http://oX1H5wQm.pngdc.cn
http://WI02lNtS.pngdc.cn
http://SMg9a9c0.pngdc.cn
http://mXj3pEwU.pngdc.cn
http://PGTrWpAN.pngdc.cn
http://RXzm1B87.pngdc.cn
http://OVRU1kdR.pngdc.cn
http://QuGtlhct.pngdc.cn
http://u5Rk52tH.pngdc.cn
http://9jDGdtpz.pngdc.cn
http://HgfKk9pA.pngdc.cn
http://HdyyfFxP.pngdc.cn
http://SN4GiT5B.pngdc.cn
http://NS75rwYy.pngdc.cn
http://ZoYs6RJf.pngdc.cn
http://XWmQll2k.pngdc.cn
http://Oovbfp8S.pngdc.cn
http://M6y4EDtf.pngdc.cn
http://vzboGCbK.pngdc.cn
http://y1Jk07Wv.pngdc.cn
http://MzqTO3Vx.pngdc.cn
http://5xUnI7v8.pngdc.cn
http://zEb0jA37.pngdc.cn
http://Zz8yUoF5.pngdc.cn
http://RDmiGgYB.pngdc.cn
http://1ErNkqhr.pngdc.cn
http://www.dtcms.com/a/57447.html

相关文章:

  • go并发学习笔记
  • Java 大视界 -- 基于 Java 的大数据实时数据处理框架性能评测与选型建议(121)
  • 美杜莎:带多个解码头的简单LLM推理加速框架
  • 《打造视频同步字幕播放网页:从0到1的技术指南》
  • 软考中级_【软件设计师】知识点之【面向对象】
  • 线程的常见使用方法
  • 硬件基础(4):(2)认识ADC参考电压
  • 当服务器出现卡顿该怎么办?
  • MELON的难题
  • 09第三方库的使用
  • 关于无感方波启动预定位阶段
  • PAT乙级真题(2014·冬)
  • JavaWeb-mysql8版本安装
  • 【SpringBoot】统一功能处理
  • vite.config.js 是Vite 项目的配置文件,分析具体用法
  • 消息队列为什么会有消费组的概念,什么作用,以订单系统为例说明
  • Vue _总结
  • AutoAWQ - 易用的 4 位量化模型工具
  • 栈在数组、链表中的应用 ---- 十进制转二进制函数、十进制转八进制函数
  • 【音视频 | AAC】AAC编码库faac介绍、使用步骤、例子代码
  • 【AD】5-16 泪滴的添加
  • Python 2025:AI霸主地位受挑战?最新技术趋势与未来展望
  • 一周热点-Claude 3.7 Sonnet-在响应和思考模型之间切换
  • 电脑如何在系统默认的壁纸中切换自己喜欢的
  • 从技术角度看大语言模型进化技术路线与落地应用详解:未来的最佳实践方向是什么?
  • 什么是Hash碰撞?怎么解决哈希碰撞?
  • vue安装stylelint
  • 在 Spring Boot 2.7.x 中引入 Kafka-0.9 的实践
  • 数学之约数个数定理-阶乘约数
  • # 深入理解RNN(一):循环神经网络的核心计算机制