首页 > 其他分享 >Vue 生命周期

Vue 生命周期

时间:2025-01-01 12:19:43浏览次数:1  
标签:生命周期 销毁 DOM 钩子 Vue mounted

一、生命周期钩子

1、挂载流程

初始化生命周期->beforecreate->数据代理->created->初始化虚拟DOM->beforemount->虚拟DOM转化为真是DOM并挂在在页面->mounted

2、更新流程

数据发生改变->beforeupdate(此时数据发生改变,页面没变)->对比虚拟DOM,生成页面->updated(页面和数据都更新)

3、销毁流程

vm.$destroy()-> beforedestroy(销毁前准备工作)->destoryed()

二、重要的生命周期钩子

1、mounted

发送ajax请求、启动定时器、绑定自定义事件、订阅消息等[初始化操作]

2、beforedestroy

清除定时器、解绑自定义事件、取消订阅消息等[首尾工作]

三、销毁Vue实例

1、销毁后借助Vue开发者工具看不到任何信息

2、销毁后自定义的事件会失效,原生dom不失效

3、一般不会在beforedestroy钩子操作数据,即使操作了,也不会触发新的流程

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>生命周期钩子</title>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
    <!-- 使用定时器操作透明度 -->
    <div id="container">
        <h2 :style="{opacity: tmd}">Hello World</h2>
        <button @click="stopTimer">停止</button>
    </div>
    <script type="text/javascript">
        new Vue({
            el:'#container',
            data:{
                tmd:1                
            },
            methods: {
                stopTimer(){
                    this.$destroy()
                }
            },
            mounted() {
                console.log("mounted")
                this.timer = setInterval(() => {
                    console.log('setInterva')
                    if (this.tmd<=0) {
                        this.tmd=1
                    } else {
                        this.tmd-=0.01
                    }
                }, 10);
            },
            beforeDestroy() {
                clearInterval(this.timer)
            },
        })
    </script>
</body>
</html>

 

标签:生命周期,销毁,DOM,钩子,Vue,mounted
From: https://www.cnblogs.com/wt7018/p/18645450

相关文章

  • Vue.js组件开发-客户端如何限制刷新Token次数
    在Vue.js组件开发中,限制刷新Token的次数是一个重要的安全措施,可以防止恶意用户或攻击者无限次尝试刷新Token。客户端限制在客户端,可以通过Vuex、localStorage或sessionStorage等存储机制来跟踪刷新Token的尝试次数。以下是一个基本的实现步骤:‌1.定义状态‌:在Vuexstore中......
  • 【Java项目】基于SpringBoot+Vue的宠物救助及领养平台的设计与实现(源码+LW+包运行)
    源码获取:https://download.csdn.net/download/u011832806/90001525基于SpringBoot+Vue的宠物救助及领养平台开发语言:Java数据库:MySQL技术:SpringBoot+MyBatis+Vue.js工具:IDEA/Ecilpse、Navicat、Maven宠物救助及领养平台是一个专注于宠物保护和幸福的在线平台。它致力于......
  • Vue.js组件开发-实现无感刷新Token
    在Vue.js应用中,实现无感刷新Token涉及到在用户的会话Token即将过期或已经过期时自动获取新的Token,而不影响用户的操作体验。需要通过拦截器(interceptors)来处理API请求,并在检测到Token过期或无效时自动进行刷新。步骤‌1.设置Token存储和检测机制‌:在用户登录成功后,将Token存......
  • Vue 自定义指令
    一、定义语法1、局部//简单,只需要指令语法绑定元素和指令语法所在模块加载时使用nevVue({...,directives:{//element指令绑定的dom,binding获取value指令名(element,binding){},},}//详细,指令绑定元素、元素加载到页面、指......
  • vue-router如何实现懒加载?
    在Vue.js项目中,使用vue-router进行路由管理时,懒加载(也叫延迟加载)是一种优化策略,它允许我们按需加载路由对应的组件,而不是在应用启动时一次性加载所有组件。这可以显著提高首屏加载速度,特别是对于大型应用来说。vue-router支持基于Vue异步组件的懒加载。下面是如何在vue-router中......
  • vue3快体现在哪些方面?
    Vue3在前端开发中的“快”主要体现在以下几个方面:渲染速度快:Vue3通过优化VirtualDOM和模板编译,提升了页面渲染速度。具体而言,Vue3采用了基于模板的编译方式,将模板编译成渲染函数,消除了运行时的解析开销。此外,Vue3还引入了静态节点提升和组件级别的缓存等优化策略,这些改进使得Vu......
  • 在vue项目中如何获取页面的hash变化?
    在Vue项目中,你可以通过监听$route对象的hash属性变化来获取页面的hash变化。具体来说,你可以使用VueRouter的导航守卫或者watch属性来实现。方法一:使用VueRouter的导航守卫VueRouter提供了一套丰富的导航守卫API,允许你在路由发生变化时执行一些操作。虽然hash变化不会触......
  • vue-router的跳转与location.href有什么不同?
    vue-router的跳转与location.href的主要区别体现在它们的使用场景、功能特性以及对Vue.js单页面应用(SPA)的支持上。使用场景:vue-router是Vue.js官方的路由管理器,专为Vue.js设计,用于构建单页面应用(SPA)。它允许你通过定义一系列的路由规则,来管理不同的URL路径如何映......
  • vue3为什么会使用proxy?
    Vue3选择使用Proxy作为数据响应式的核心机制,主要基于以下几个方面的原因:性能优势:与Vue2中使用的Object.defineProperty相比,Proxy在性能上具有显著优势。Object.defineProperty需要遍历对象的每个属性并逐一添加getter和setter,以实现数据的响应式。这种方式在处理大型对象或频繁......
  • vue3 如何封装aixos
    封装Axios可以帮助我们更好地管理HTTP请求,例如添加统一的基础URL、请求头、拦截器等功能。下面是封装Axios的一个示例,以及如何在Vite项目中使用它来请求数据。首先,创建一个新的JavaScript文件,比如http.js或axiosInstance.js,并在其中配置Axios实例://src/......