Vue3入门指北(九)生命周期钩子

简介: Vue3入门指北(九)生命周期钩子

前言


我们知道每个Vue组件在整个生命周期都会经历很多步骤,比如组件初始化、template模板的编译、把实例挂载挂载到相应的DOM节点,还有组件数据更新以及卸载的时候。而在这些阶段,Vue官方为我们提供相应阶段的生命周期钩子函数,以便我们在Vue组件相应的阶段运行自己的代码。


生命周期


废话少说,先上图:


1669368583677.png


onMounted()


当我们想在组件初始渲染完成,并且相应的DOM节点创建完成之后,来执行代码的时候,我们就可以调用onMounted钩子函数。


<script setup>
import { onMounted } from 'vue'
onMounted(() => {
  console.log(`组件初始渲染完成.`)
})
</script>
复制代码


我们可以看到onMounted接受一个回调函数,我们可以在回调函数内部,添加我们想要运行的代码。


有一点需要注意的是,钩子函数必须在组件初始化时同步注册。因为当钩子函数被执行时,相应的回调函数也会注册到相应的初始化组件上。


setTimeout(() => {
  onMounted(() => {
  })
}, 200)
复制代码


如上,如果我们把钩子函数放到setTimeout里面的话,会导致回调函数注册的时候,该组件实例已丢失。也就意味着,回调函数中的代码并不会执行。


onUpdated()


当我们想在组件内部的响应式属性更新导致DOM结构更新的时候,执行相应的代码,我们就可以调用onUpdated钩子函数:


<script setup>
import { onUpdated } from 'vue'
onUpdated(() => {
  console.log(`组件更新.`)
})
</script>
复制代码


该钩子函数并不会在服务端渲染的时候被调用。而且不要在钩子函数里改变组件的状态,这将导致无限循环。


还有一点要注意的是,父组件的更新钩子会在其子组件的更新钩子之后调用。

相关文章
|
8天前
|
JavaScript
Vue3中路由跳转的语法
Vue3中路由跳转的语法
111 58
|
1天前
|
存储 API
vue3中如何动态自定义创建组件并挂载
vue3中如何动态自定义创建组件并挂载
|
7天前
|
JavaScript 索引
Vue 2和Vue 3的区别以及实现原理
Vue 2 的响应式系统通过Object.defineProperty来实现,它为对象的每个属性添加 getter 和 setter,以便追踪依赖并响应数据变化。
22 9
|
8天前
|
JavaScript 开发工具
vite如何打包vue3插件为JSSDK
【9月更文挑战第10天】以下是使用 Vite 打包 Vue 3 插件为 JS SDK 的步骤:首先通过 `npm init vite-plugin-sdk --template vue` 创建 Vue 3 项目并进入项目目录 `cd vite-plugin-sdk`。接着,在 `src` 目录下创建插件文件(如 `myPlugin.js`),并在 `main.js` 中引入和使用该插件。然后,修改 `vite.config.js` 文件以配置打包选项。最后,运行 `npm run build` 进行打包,生成的 `my-plugin-sdk.js` 即为 JS SDK,可在其他项目中引入使用。
|
6天前
|
JavaScript 调度
Vue3 使用 Event Bus
Vue3 使用 Event Bus
11 1
|
7天前
|
JavaScript
Vue3 : ref 与 reactive
Vue3 : ref 与 reactive
9 1
vue3 reactive数据更新,视图不更新问题
vue3 reactive数据更新,视图不更新问题
|
7天前
|
JavaScript
|
7天前
vue3定义暴露一些常量
vue3定义暴露一些常量
|
6天前
Vue3 使用mapState
Vue3 使用mapState
10 0