当前位置: 首页 > 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 的逻辑。

相关文章:

  • 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介绍、使用步骤、例子代码
  • 成都官方网站建设/建站seo推广
  • 项目设计课题研究高中综合评价/百度搜索引擎优化方式
  • 珠海政府网站建设公司/台州关键词优化平台
  • 做网站排名工具/产品设计
  • 做网站设计的公司叫什么/近期国内外重大新闻10条
  • 做网站用vps还是虚拟主机/熊猫关键词工具