首页 > 其他分享 >【第6章】Vue生命周期

【第6章】Vue生命周期

时间:2024-06-13 19:28:55浏览次数:6  
标签:生命周期 console log component Vue 挂载 now

文章目录


前言

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板,挂载实例到 DOM,以及在数据改变时更新 DOM。在此过程中,它也会运行被称为生命周期钩子的函数,让开发者有机会在特定阶段运行自己的代码。
在这里插入图片描述


一、生命周期

1. 两大类

Vue3.0增加了组合式API,所以生命周期分为两类:

  • 选项式 API
  • 组合式 API

两类生命周期用法不同,作用是一样的。

2. 生命周期

生命周期可大致划分为:创建、挂载、更新、卸载

  1. beforeCreate

    在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

  2. created

    实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

  3. beforeMount

    在挂载开始之前被调用:相关的 render 函数首次被调用。

  4. mounted

    el 被新创建的 vm. e l 替换,并挂载到实例上去之后调用该钩子。如果 r o o t 实例挂载了一个在内联模板中渲染的元素,当 m o u n t e d 被调用时 v m . el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个在内联模板中渲染的元素,当 mounted 被调用时 vm. el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个在内联模板中渲染的元素,当mounted被调用时vm.el 也在文档内。

  5. beforeUpdate

    数据更新时调用,发生在虚拟 DOM 打补丁之前。这里适合在更新之前访问现有的 DOM,比如手动移除已添加的事件监听器。

  6. updated

    由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。

  7. beforeUnmount

    实例销毁之前调用。在这一步,实例仍然完全可用。

  8. unmounted

    Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也都会被销毁。

二、选项式生命周期

1. 代码

<!-- 选项式 API -->
<script>
export default {
  data() {
    return {
        msg: '北京',
        count: 0
    };
  },
  beforeCreate() {
    console.log('the component is now before create.')
  },
  created() {  
    console.log('the component is now created.')
  },
  beforeMount() {
    console.log('the component is now before mount.')
  },
  mounted() {  
    console.log('the component is now mounted.')
  },
  beforeUpdate() {
    console.log('the component is now before update.')
  },
  updated() {  
    console.log('the component is now updated.')
  },
  beforeUnmount() {
    console.log('the component is now before unmount.')
  },
  unmounted() {  
    console.log('the component is now unmounted.')
  }
};
</script>
<template>
  <h2>{{ msg }},欢迎你</h2><br>
  <button id="count" @click="count++">{{ count }}</button>
</template>

<style>
  h2{
    color:red;
  }
</style>

2. 效果

在这里插入图片描述

三、组合式生命周期

组合式生命周期在 beforeCreatecreated 之间执行

1. 代码

<script setup>
import { ref,onBeforeMount,onMounted,onBeforeUpdate, onUpdated,onBeforeUnmount,onUnmounted } from 'vue'
const msg=ref('北京')
onBeforeMount(() => {
  console.log(`the component is now before mounted.`)
})
onMounted(() => {
  console.log(`the component is now mounted.`)
})
const count = ref(0)
onBeforeUpdate(() => {
  console.log(`the component is now before updated.`)
})
onUpdated(() => {
  console.log(`the component is now updated.`)
})
onBeforeUnmount(() => {
  console.log(`the component is now before unmount.`)
})
onUnmounted(() => {
  console.log(`the component is now unmounted.`)
})
</script>

<template>
  <h1>{{ msg }},欢迎你</h1><br>
  <button id="count" @click="count++">{{ count }}</button>
</template>

<style>
  h1{
    color:red;
  }
</style>

2. 效果

2.1 挂载和更新

在这里插入图片描述

2.2 卸载和挂载

在这里插入图片描述


总结

回到顶部

一文带您学会Vue生命周期,收获满满,最常用的是mounted在组件被挂载之后调用。

标签:生命周期,console,log,component,Vue,挂载,now
From: https://blog.csdn.net/qq_44824164/article/details/139423676

相关文章

  • 【java计算机毕设】图书管理系统javaweb java MySQL springboot vue html maven送文档
    1项目功能【java计算机专业学长毕业设计分享】智慧图书管理系统JavaSpringBootvueHTMLMySQL前后端分离2项目介绍系统功能:智慧图书管理系统包括管理员和用户两种角色。管理员的功能包括在个人中心修改个人信息和密码,管理员功能模块管理管理员。基础数据管理模......
  • vue3实现在移动端时用卡片展示数据而在PC端时切换为表格展示数据
    1、根据屏幕宽度自动切换卡片和表格来展示数据2、PC端用pagination分页,移动端用v-infinite-scroll滚动分页3、准备封装成一个组件......<template><div><divv-if="isMobile"class="infinite-list"style="overflow:auto"v-infinite-scroll="loadMore&q......
  • 43、k8s-数据存储-高级存储-生命周期
    ·资源供应:管理员手动创建底层存储和PV·资源绑定:用户创建PVC,kubernetes负责根据PVC的声明去寻找PV,并绑定在用户定义好PVC之后,系统将根据PVC对存储资源的请求在已存在的PV中选择一个满足条件的。一旦找到,就将该PV与用户定义的PVC进行绑定,用户的应用就可以使用这个PVC了、如......
  • Vue Antd Admin本地部署
    官网:https://doc.vue-antd-admin.pages.dev/github地址:https://github.com/iczer/vue-antd-admin/tree/basic 1、basic分支本地部署(开发基于此分支)克隆项目basic分支到本地->>下载依赖:npminstall->>启动项目:npmrunserve 2、master分支本地部署(研究基于此分支-试......
  • (三十九)Vue之集中式的状态管理机制Vuex
    这里写目录标题概念vuex的核心概念State(状态)Getters(获取器)Mutations(突变)Actions(动作)搭建vuex环境基本使用getters的使用上一篇:(三十八)Vue之插槽Slots概念Vuex是一个专为Vue.js应用程序开发的状态管理模式。对vue应用中多个组件的共享状态进行集中式的管理(读/写),也是......
  • Vue主要使用-03
      组件通讯     组件通讯也是我们需要了解的,在我们的实际开发中,我们使用的非常多,比如父组件内的数据传入到子组件,子组件的数据传入到父组件,什么是父组件什么是子组件?父组件内包含着我们的子组件,我们的父组件可以有多个子组件,父组件就是我们使用子组件拼接......
  • vue3 动态路由生成
    动态路由生成----vue3stores/index.jsimport{defineStore}from'pinia';exportconstuseRouteStore=defineStore('route',{state:()=>({dynamicRoutes:false})});router/index.jsimport{createRouter,createWebHistory}fr......
  • vite+vue3展示文件夹内的所有组件
    https://www.cnblogs.com/y-shmily/p/16546743.html 在组件目录下新建index.jsimport{markRaw}from"vue";constfilesNameList=[];constfiles=import.meta.glob("./*.vue");for(constkeyinfiles){constfileName=key.replace(/(\.......
  • vue 父子组件交互 props,emit,slot
    props 子组件可以通过 props 从父组件接受动态数据vue2 vue3defineProps() 是一个编译时宏,并不需要导入   emit()emit()子组件向父组件触发事件vue2this.$emit() 的第一个参数是事件的名称。其他所有参数都将传递给事件监听器。 vue3emit() 的第一个参......
  • vue项目连接到后端接口
    背景后端采用的是若依springboot分离版本,前端是自己搭建的vue项目,不是若依的前端框架,需要免认证进行调用接口的话,注释掉安全认证配置中的鉴权认证,或者将接口加入白名单1.安装axiosnpminstallaxios--save2.在request.js中编写请求后端的路径,创建src/utils/request.jsimpo......