Vue生命周期函数是什么?Vue生命周期函数有什么用? ∠( °ω°)/ 前端知识

Vue生命周期函数是什么?Vue生命周期函数有什么用? ∠( °ω°)/ 前端知识生命周期函数简介

生命周期函数简介

Vue官方文档在第一章就提到了生命周期,但对于初学者来说可能看上会一头雾水。这里的生命周期指的是Vue实例(或者Vue组件),在页面中创建-运行-销毁的三个阶段。要想完全看懂生命周期是如果运行的需要对Vue实例有一定了解,至少知道Vue实例中的datamethods是干什么的。如果你还对此一无所知可以看一下我另一篇Vue入门博客(看到属性绑定即可)。
生命周期函数总共有八个,其中:

  1. 创建期间函数有: beforeCreatecreatedbeforeMountmounted
  2. 运行期间的函数有: beforeUpdateupdated
  3. 销毁期间的函数有: beforeDestroydestroyed

创建期间

beforeCreate

beforeCreate直译为创造之前,这里创建之前指的是Vue被实例化(new Vue()已经被创建),但datamethods都还没用创建的时候。

created

此时datamethods已经被创建,可以使用了。模板还没有被编译。

 <html lang="zh_CN"> <head> <meta charset="UTF-8"> <title>dome25 
     title>  
      head> <body> 
    
<p id='vueData'>{ {vdata}} p> <button @click="event">methods button> div> body> <script src="https://cdn.jsdelivr.net/npm/vue"> script> <script> // 创建Vue实例 new Vue({ el: '#app', data: { vdata: ['vue的data属性已经被创建'] }, methods: { event(){ this.vdata.push("vue的methods属性也已经被创建") } }, // 使用beforeCreate beforeCreate(){ console.log("===========(当前为beforeCreate)") console.log(this.vdata) console.log(this.event) console.log("===========(当前为beforeCreate)") }, // 使用created created(){ console.log("===========(当前为created)") console.log(this.vdata) console.log(this.event) console.log("===========(当前为created)") } }); script> html>

在这里插入图片描述

beforeMount

created的下一阶段,此时模板已经被编译了,但没有挂载到页面中。

mounted

此时模板代码已经被加载到页面中了,此时创建的所以事情都已经准备好了,网页开始运行了。

 <html lang="zh_CN"> <head> <meta charset="UTF-8"> <title>dome25 
     title>  
      head> <body> 
    
<p id='vueData'>{ {vdata}} p> <button @click="event">methods button> div> body> <script src="https://cdn.jsdelivr.net/npm/vue"> script> <script> // 创建Vue实例 new Vue({ el: '#app', data: { vdata: ['vue的data属性已经被创建'] }, methods: { event(){ this.vdata.push("vue的methods属性也已经被创建") } }, // 使用beforeMount beforeMount(){ console.log("===========(当前为beforeMount)") console.log(document.getElementById('vueData')) console.log("===========(当前为beforeMount)") }, // 使用mounted mounted(){ console.log("===========(当前为mounted)") console.log(document.getElementById('vueData')) console.log("===========(当前为mounted)") }, }); script> html>

在这里插入图片描述

运行期间

beforeUpdate

在网页运行期间,data中的数据如果更新了就会触发此方法。在这个阶段data中的数据已经进行了更新,但并没有在模板中进行更新,所以页面还没有发生变化

updated

这个阶段数据不仅在data中更新了,也在页面中更新完成了。算是更新完成的状态。

 <html lang="zh_CN"> <head> <meta charset="UTF-8"> <title>dome26 
     title>  
      head> <body> 
    
<p id='vueData'>{ {vdata}} p> <button @click="event">methods button> div> body> <script src="https://cdn.jsdelivr.net/npm/vue"> script> <script> // 创建Vue实例 new Vue({ el: '#app', data: { vdata: ['vue的data属性已经被创建'] }, methods: { event(){ this.vdata.push("vue的methods属性也已经被创建") } }, // 使用beforeUpdate beforeUpdate(){ console.log("===========(当前为beforeUpdate)") console.log('从页面中获取的vdata信息: '+document.getElementById('vueData').innerText) console.log('从实例中获取的vdata信息: '+this.vdata) console.log("===========(当前为beforeUpdate)") }, updated(){ console.log("===========(当前为updated)") console.log('从页面中获取的vdata信息: '+document.getElementById('vueData').innerText) console.log('从实例中获取的vdata信息: '+this.vdata) console.log("===========(当前为updated)") } }); script> html>

在这里插入图片描述

销毁期间

beforeDestroy

Vue实例在这个阶段是已经收到了销毁指令,但指令却还没有执行的时候。这时候Vue中所有的属性都是可以使用的。注意:这里的销毁指的是解绑了事件的监听还有watcher对象数据与view的绑定,而不是页面。如果你想做在关闭窗口的时候弹出的一个提示框使用生命周期函数是无法实现的!

 <html lang="zh_CN"> <head> <meta charset="UTF-8"> <title>dome27 
     title>  
      head> <body> 
    
<button @click="texts">测试 button> <des v-if="vitem"> des> div> body> <script src="https://cdn.jsdelivr.net/npm/vue"> script> <script> Vue.component('des', { template: '

这里是模板

'
, data(){ return{ value: '默认值' } }, methods: { change(){ this.value = '我被改变了' } }, beforeDestroy(){ console.log('=======') console.log(this.value) console.log(this.change) console.log(document.getElementById('uid')) console.log('=======') } }) // 创建Vue实例 new Vue({ el: '#app', data: { vitem: true }, methods: { texts(){ this.vitem = this.vitem ? false : true } } });
script> html>

在这里插入图片描述

destroyed

Vue实例已经被完全销毁后执行,次数Vue实例上所以东西都会解绑,所以时间都会被移除,所有子元素都会销毁。

销毁期间的函数使用较少,功能性较少,如果你想实现类似csdn写博客未保存关闭页面时弹出的提示可以了解一下Vue-Router的导航守卫。这位博主就详细写了如果用导航守卫来实现关闭提示未保存的弹窗。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177489.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:23
下一篇 2026年3月26日 下午7:24


相关推荐

  • python树莓派编程下载_树莓派Python编程入门与实战(完整版) 中文pdf扫描版[85MB]

    树莓派是一个只有信用卡大小的裸露电路板,它也是一个运行开源Linux操作系统的完全可编程的PC系统。树莓派的官方编程语言是Python,树莓派Python编程入门与实战就介绍了树莓派的Python编程方法。本书共分7个部分。前6个部分介绍了树莓派编程环境、Python基础知识、高级Python、图形编程、业务编程和树莓派Python项目;第7部分通过附录介绍了如何将树莓派操作系统加载到Raspbi…

    2022年4月8日
    224
  • decltype用法介绍

    decltype用法介绍想从表达式推断出要定义的变量的类型 但不想计算表达式的值 此时可以使用 decltype

    2026年3月19日
    2
  • mysql集群之MYSQL CLUSTER

    mysql集群之MYSQL CLUSTERMYSQLCLUSTER

    2022年7月1日
    26
  • pytest skipif_白盒测试用例

    pytest skipif_白盒测试用例前言pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能Skip和xfail:处理那些不会成功的测试用例你可以对那些在某些特定平台上不能运行的测试用

    2022年7月28日
    7
  • 字符串中最长的回文字符串长度

    字符串中最长的回文字符串长度1、回文字符串  回文字符串是指aba类型的字符串,即字符串关于中间字符对称。判断字符串中是否含有回文、得到最长回文字符串的长度、得到不同回文字符串的个数等等,是经常考察的编程题目。2、之前采用的一种比较笨的得到最长回文字符串的方法  思想:双重指针遍历,根据回文字符串的特点,回文开始的字符与结尾处字符相同……那么一个指针i从前向后遍历,一个指针j从后向前遍历,如果出现

    2022年6月4日
    35
  • MAC、OS系统上怎么安装MT4、MT5交易软件

    MAC、OS系统上怎么安装MT4、MT5交易软件对于有些交易易来说,如果自己的电脑是苹果电脑,想要在MACOS系统中操作和使用MT4/MT5软件,那么应该怎么办呢?其实还是有办法的。首先您可以在自己的苹果电脑中安装Wine,它是一个免费的程序,安装之后,您就可以运行Windows系统应用程序。由于Wine其实还不是一个完全稳定的程序,可能您在运行程序的时候又部分功能无法正常运作。所以建议您可以安装PlayOnMac,它是Wine相关的软件,更利于在MACOS系统中操作。在MacOS系统安装MT4/MT5交易软件主要可以分成两步:安装W

    2022年5月29日
    75

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号