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

vue3 如何使用 mounted

  1. vue3 如何使用 mounted
    在 Vue 3 中,mounted 生命周期钩子用于当组件被挂载到 DOM 中后执行一些操作。

这个钩子非常适合用来执行那些依赖于 DOM 的初始化工作,比如获取元素的尺寸或者是与第三方的 DOM 有关的库进行交互等。

下面是一个简单的 Vue 3 组件示例,展示了如何使用 mounted 钩子:

import { ref, onMounted } from 'vue'export default {setup() {const count = ref(0)// 在组件挂载完成后执行onMounted(() => {console.log('Component is now mounted and ready')// 这里可以执行任何需要在挂载完成后做的事情// 比如访问真实的 DOM 元素const el = document.querySelector('#my-element')console.log(el)// 或者启动一个轮询定时器const interval = setInterval(() => {count.value++}, 1000)// 清理函数,在组件卸载前清除定时器return () => {clearInterval(interval)}})return { count }}
}

在这个例子中,onMounted 接受一个函数作为参数,该函数会在组件挂载到 DOM 后立即执行。

这里也展示了如何在 onMounted 回调中返回一个清理函数,它会在组件卸载时被调用,这对于清除副作用(如定时器)非常有用。

注意,Vue 3 使用了 Composition API,因此传统的选项式写法中的生命周期钩子(如 mounted)已经被 setup() 函数中的 onMounted() 函数所替代。

如果你是从 Vue 2 升级到 Vue 3,这可能是需要注意的一个变化。

  1. vue3 mounted 的触发时机

在 Vue 3 中,mounted 生命周期钩子的触发时机是在组件实例被挂载到 DOM 后。

具体来说,这意味着以下几点:

  1. 实例创建完成:Vue 实例已经完成了数据观测(data observer)、属性和方法的运算,以及指令配置。此时,数据模型已经可以正常工作,但尚未开始第一次 DOM 渲染。
  2. DOM 挂载完成:Vue 实例已经完成了模板编译和渲染,并且组件已经被插入到父容器节点中,DOM 已经被更新以反映组件的初始状态。
  3. $el 属性可用 :组件的 e l 属性已经被创建并且可以访问,这意味着你可以在这个阶段通过 t h i s . el 属性已经被创建并且可以访问,这意味着你可以在这个阶段通过 this. el属性已经被创建并且可以访问,这意味着你可以在这个阶段通过this.el 访问到挂载后的 DOM 节点。
  4. ref 属性可用:所有注册过的 ref 属性都已经解析,并且可以通过 this.$refs 访问到它们引用的 DOM 元素或子组件实例。

简而言之,mounted 钩子是当你需要在组件挂载后执行一些操作时使用的理想位置,比如:

  • 操作 DOM:由于组件已经挂载到了 DOM 中,你现在可以安全地查询或操作 DOM。
  • 初始化第三方插件:很多第三方插件或库需要一个已经存在的 DOM 节点来初始化,mounted 是一个合适的时间点。
  • 发送网络请求:如果需要在组件加载时获取数据,可以在 mounted 钩子中发起网络请求。
  • 设置定时器:如果需要在组件挂载后定期执行某些操作,可以在 mounted 钩子中设置定时器。
import { ref, onMounted } from 'vue';export default {setup() {const message = ref('Hello, Vue 3!');onMounted(() => {console.log('Component has been mounted!');// 在这里可以安全地操作 DOMconst element = document.getElementById('app');console.log(element); // 输出挂载后的 DOM 节点// 发送网络请求fetch('https://api.example.com/data').then(response => response.json()).then(data => {console.log('Fetched data:', data);message.value = data.message; // 更新组件的状态}).catch(error => {console.error('Error fetching data:', error);});});return { message };}
};

在这个示例中,当组件挂载到 DOM 后,控制台会打印一条消息,表示组件已经挂载。

此外,还会发起一个网络请求来获取数据,并更新组件的状态。这些都是在 mounted 钩子中常见的操作。

http://www.lryc.cn/news/509063.html

相关文章:

  • PostgreSQL JOIN
  • mysql(基础语法)
  • 【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo
  • 抓取手机HCI日志
  • 【linux】 unshare -user -r /bin/bash命令详解
  • 微软远程桌面APP怎么用
  • Android9.x SurfaceView源码分析
  • MDS-NPV/NPIV
  • 通用人工智能的关键:统一语言描述万物
  • JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
  • [前端]HTTP库Axios
  • vue3入门教程:reactive函数
  • SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
  • 叉车作业如何确认安全距离——UWB测距防撞系统的应用
  • 5-Gin 静态文件服务 --[Gin 框架入门精讲与实战案例]
  • 【自动驾驶】3 激光雷达③
  • Vue 3.5 编写 ref 时,自动插入.Value
  • 从0到1实现一个RS蓝图系统-概念提出技术栈选型
  • npm淘宝镜像
  • 深入解析:Python中的决策树与随机森林
  • 奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试
  • 【Leetcode】1705. 吃苹果的最大数目
  • 职业技能赛赛后心得
  • 从AI换脸到篡改图像,合合信息如何提升视觉内容安全?
  • c# 实现一个简单的异常日志记录(异常迭代+分片+定时清理)+AOP Rougamo全局注入
  • webrtc学习----前端推流拉流,局域网socket版,一对多
  • 美国加州房价数据分析01
  • 用Python开启人工智能之旅(四)深度学习的框架和使用方法
  • 两分钟解决:vscode卡在设置SSH主机,VS Code-正在本地初始化VSCode服务器
  • 信号仿真高级工程师面试题