IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue生命周期 -> 正文阅读

[JavaScript知识库]vue生命周期

vue生命周期

?生命周期: Vue是一个构造函数,当执行执行这个函数时,相当于初始化vue实例;
在创建实例过程中,需要设置数据监听,编译模板,将实例挂载到DOM上,数据更新能够让DOM也更新,
在这个初始化,又会不同阶段默认调用一些函数执行,这些函数就是生命周期的钩子函数;

生命周期钩子函数

生命周期钩子函数,让够让咱们在初始化实例时,添加自己的代码;
生命周期的钩子函数中的this,会默认指向vue的实例;

钩子函数

beforeCreate created? ?可以获取数据及方法
beforeMount mounted? ? 可以获取到真实的DOM
beforeUpdate updated? ? ?数据更新执行
beforeDestroy destroyed? ? 销毁vue实例,不再具有双向数据绑定的特点

Vue的八大生命周期钩子函数?

区别之一:执行顺序的问题 beforeCreate>created>beforeMount>mounted?

 // js部分
    <div id="app">
? ? ? ? <h1>{{msg}}</h1>
? ? ? ? <button @click="change">改变msg</button>
? ? ? ? <button @click="destroy">销毁Vue实例</button>
? ? ? ? <h1>{{time}}</h1>
? ? </div>
  1. beforeCreate:Vue实例化对象创建之前,实例化对象创建之前是获取不到data里面的数据的
 //Vue实例化对象创建之前
            // 最先执行的生命周期
            beforeCreate() {
                console.log("Vue实例化对象创建之前");//Vue实例化对象创建之前
                console.log(this.msg); // undefined
            },

?created:Vue实例化对象创建之后,实例化对象创建之后可以获取data里面的数据?

? ? ? ? ? ? ? ? 实例化对象创建之后不可以获取到dom包括根节点

? ? ? ? ? ? ?★一般在created里面调用接口把接口里面的数据赋值给到Vue的data中

? /* Vue实例化对象创建之后 */
? ? ? ? ? ? created() {
? ? ? ? ? ? ? ? /* 实例化对象创建之后可以获取data里面的数据 */
? ? ? ? ? ? ? ? /* 实例化对象创建之后不可以获取到dom包括根节点 */
? ? ? ? ? ? ? ? console.log('created',this.msg,this.$el)
? ? ? ? ? ? ? ? /* ★一般在created里面调用接口把接口里面的数据赋值给到Vue的data中 */
? ? ? ? ? ? ? ? // this.timeId = setInterval(()=>{
? ? ? ? ? ? ? ? // ? ? this.time++;
? ? ? ? ? ? ? ? // ? ? console.log(this.time)
? ? ? ? ? ? ? ? // },500)
? ? ? ? ? ? },

beforeMount:Vue的dom挂载之前,beforeMount可以获取到节点,但是不能把data中的数据渲染在dom节点中

 beforeMount() {
? ? ? ? ? ? ? ? /* dom挂载之前可以获取到根节点 */
? ? ? ? ? ? ? ? /* beforeMount还没有把data中的数据渲染到dom节点上 */
? ? ? ? ? ? ? ? console.log('beforeMount',this.$el)
? ? ? ? ? ? },

mounted:Vue的dom挂载之后,mounted已经把data中的数据渲染到了dom节点上

? ? ? ? ? ? ? ?★一般在获取dom节点操作要放在mounted中执行,例如echarts中获取根元素

 /* Vue的dom挂载之后 */
? ? ? ? ? ? mounted() {
? ? ? ? ? ? ? ? /* mounted已经把data中的数据渲染到了dom节点上 */
? ? ? ? ? ? ? ? console.log('mounted',this.$el)
? ? ? ? ? ? ? ? /* ★一般在获取dom节点操作要放在mounted中执行,例如echarts中获取根元素 */
? ? ? ? ? ? },

?beforeUpdate:?Vue的data值更新前,当我把Vue实例中的data中的值改变了会触发? ? ? ? ? ? ? ? ?beforeUpdate?和updated,顺序上 beforeUpdate执行顺序优先于updated

? /* Vue的data值更新前 */
? ? ? ? ? ? /* 当我把Vue实例中的data中的值改变了会触发beforeUpdate和updated */
? ? ? ? ? ? /* 顺序上 beforeUpdate执行顺序优先于updated ?*/
? ? ? ? ? ? beforeUpdate() {
? ? ? ? ? ? ? ? console.log('beforeUpdate',this.msg,this.$el)
? ? ? ? ? ? },

updated:Vue的data值更新后

 ? updated() {
? ? ? ? ? ? ? ? console.log('updated',this.msg,this.$el)
? ? ? ? ? ? },

beforeDestroy:Vue组件销毁前,在调用$destroy()方法的时候 会执行下面的两个钩子函数

? ? ? ? ? ? ? ? ? ? ? ? ? 执行顺序上beforeDestroy优先于destroyed执行

? ? ? ? ? ? ? ? ? ? ? ? ★beforeDestroy和destroyed的一个使用场景是在销毁定时器节约内存的时候都可? ? 以使用

? /* Vue组件销毁前 */
? ? ? ? ? ? /* 在调用$destroy()方法的时候 会执行下面的两个钩子函数 */
? ? ? ? ? ? /* 执行顺序上beforeDestroy优先于destroyed执行 ?*/
? ? ? ? ? ? /* ★beforeDestroy和destroyed的一个使用场景是在销毁定时器节约内存的时候都可以使用 */
? ? ? ? ? ? beforeDestroy() {
? ? ? ? ? ? ? ? console.log('beforeDestroy',this.msg,this.$el)
? ? ? ? ? ? },

destroyed:Vue组件销毁后

 destroyed() {
? ? ? ? ? ? ? ? console.log('destroyed',this.msg,this.$el)
? ? ? ? ? ? ? ? clearInterval(this.timeId)
? ? ? ? ? ? },

整体代码:

<div id="app">
? ? ? ? <h1>{{msg}}</h1>
? ? ? ? <button @click="change">改变msg</button>
? ? ? ? <button @click="destroy">销毁Vue实例</button>
? ? ? ? <h1>{{time}}</h1>
? ? </div>
? ? <script src="./node_modules/vue/dist/vue.min.js"></script>
? ? <script>
? ? ? ? /* Vue的八大生命周期钩子函数 */
? ? ? ? /* 区别之一:执行顺序的问题 beforeCreate>created>beforeMount>mounted */
? ? ? ? new Vue({
? ? ? ? ? ? el:"#app",
? ? ? ? ? ? data:{
? ? ? ? ? ? ? ? msg:'我爱Vue',
? ? ? ? ? ? ? ? time:0,
? ? ? ? ? ? ? ? timeId:null
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue实例化对象创建之前 */
? ? ? ? ? ? beforeCreate() {
? ? ? ? ? ? ? ? /* 实例化对象创建之前是获取不到data里面的数据的 */
? ? ? ? ? ? ? ? console.log('beforeCreate',this.msg)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue实例化对象创建之后 */
? ? ? ? ? ? created() {
? ? ? ? ? ? ? ? /* 实例化对象创建之后可以获取data里面的数据 */
? ? ? ? ? ? ? ? /* 实例化对象创建之后不可以获取到dom包括根节点 */
? ? ? ? ? ? ? ? console.log('created',this.msg,this.$el)
? ? ? ? ? ? ? ? /* ★一般在created里面调用接口把接口里面的数据赋值给到Vue的data中 */
? ? ? ? ? ? ? ? // this.timeId = setInterval(()=>{
? ? ? ? ? ? ? ? // ? ? this.time++;
? ? ? ? ? ? ? ? // ? ? console.log(this.time)
? ? ? ? ? ? ? ? // },500)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue的dom挂载之前 */
? ? ? ? ? ? beforeMount() {
? ? ? ? ? ? ? ? /* dom挂载之前可以获取到根节点 */
? ? ? ? ? ? ? ? /* beforeMount还没有把data中的数据渲染到dom节点上 */
? ? ? ? ? ? ? ? console.log('beforeMount',this.$el)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue的dom挂载之后 */
? ? ? ? ? ? mounted() {
? ? ? ? ? ? ? ? /* mounted已经把data中的数据渲染到了dom节点上 */
? ? ? ? ? ? ? ? console.log('mounted',this.$el)
? ? ? ? ? ? ? ? /* ★一般在获取dom节点操作要放在mounted中执行,例如echarts中获取根元素 */
? ? ? ? ? ? },

? ? ? ? ? ? /* Vue的data值更新前 */
? ? ? ? ? ? /* 当我把Vue实例中的data中的值改变了会触发beforeUpdate和updated */
? ? ? ? ? ? /* 顺序上 beforeUpdate执行顺序优先于updated ?*/
? ? ? ? ? ? beforeUpdate() {
? ? ? ? ? ? ? ? console.log('beforeUpdate',this.msg,this.$el)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue的data值更新后 */
? ? ? ? ? ? updated() {
? ? ? ? ? ? ? ? console.log('updated',this.msg,this.$el)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue组件销毁前 */
? ? ? ? ? ? /* 在调用$destroy()方法的时候 会执行下面的两个钩子函数 */
? ? ? ? ? ? /* 执行顺序上beforeDestroy优先于destroyed执行 ?*/
? ? ? ? ? ? /* ★beforeDestroy和destroyed的一个使用场景是在销毁定时器节约内存的时候都可以使用 */
? ? ? ? ? ? beforeDestroy() {
? ? ? ? ? ? ? ? console.log('beforeDestroy',this.msg,this.$el)
? ? ? ? ? ? },
? ? ? ? ? ? /* Vue组件销毁后 */
? ? ? ? ? ? destroyed() {
? ? ? ? ? ? ? ? console.log('destroyed',this.msg,this.$el)
? ? ? ? ? ? ? ? clearInterval(this.timeId)
? ? ? ? ? ? },
? ? ? ? ? ? methods: {
? ? ? ? ? ? ? ? change(){
? ? ? ? ? ? ? ? ? ? this.msg = '我爱React'
? ? ? ? ? ? ? ? },
? ? ? ? ? ? ? ? destroy(){
? ? ? ? ? ? ? ? ? ? this.$destroy();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? },
? ? ? ? })
? ? </script>

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:34:49  更:2022-08-06 10:38:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/11 12:44:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码