文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Vue组件生命周期实例分析

2023-06-27 09:59

关注

本文小编为大家详细介绍“Vue组件生命周期实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue组件生命周期实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1. 组件的生命周期的四个阶段

组件的生命周期分为四个阶段:- create(创建)- mount(挂载)- update(更新)- destroy(销毁)

2. 生命周期钩子函数

2.1 钩子函数定义

2.2 钩子函数理解与实例

beforeCreate 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用;如果在 beforeCreate 函数里面去访问 data 数据对象,是访问不到的

<body>  <div id="app">    <input type="text" v-model="msg">  </div>  <script>    new Vue({      el:"#app",      data:{        msg:'123'      },      watch:{        msg:function(){          console.log("我变了");        }      },      beforeCreate(){        console.log("创建组件data对象之前自动触发~~~");        console.log("beforeCreate",this.msg);      }    })  </script></body>

结果:在 beforeCreate 函数中无法得到 msg 的值
Vue组件生命周期实例分析
2. created

<body>  <div id="app">    <input type="text" v-model="msg">  </div>  <script>    new Vue({      el:"#app",      data:{        msg:'123'      },      watch:{        msg:function(){          console.log("我变了");        }      },      beforeCreate(){        console.log("创建组件data对象之前自动触发~~~");        console.log("beforeCreated",this.msg);      },      created:function(){        console.log("创建组件data对象之后自动触发~~~");        this.msg=100000;        console.log("created",this.msg);           console.log("li数量:",document.getElementsByTagName("li").length);        console.log("p数量:",document.getElementsByTagName("p").length);       }    })  </script>

结果:在 created 函数中我们成功的拿到了、更改了 msg 的值。并且数据被更改后出发了watch 属性中的方法。 而且可以获取原本HTML 上的直接加载出来的 DOM(p 元素),但是无法获取到通过挂载模板生成的 DOM(例如:v-for 循环遍历 Vue.list 生成 li 元素)Vue组件生命周期实例分析

注意:create阶段还没有创建虚拟dom

beforeMount

beforeMount:function(){        console.log(this.$el);        console.log("li数量:",document.getElementsByTagName("li").length);      }

mounted

mounted:function(){        console.log(this.$el);        console.log("li数量:",document.getElementsByTagName("li").length);      }

结果:同样的代码,放在 beforeMount 和 mounted 函数中结果完全不一样

Vue组件生命周期实例分析

在 update 阶段,虚拟 dom 监听数据变化,随时更新 dom

beforeUpdate 当数据发生变化的时候,beforeUpdate 这个钩子函数才会执行 

updated 虚拟 dom 重新渲染后执行

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

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

<body>  <div id="app">    <input type="text" v-model="msg">    <ul>      <li v-for="(elem,index) of list" :key="index">{{elem}}</li>    </ul>    <p>p1</p>    <p>p2</p>    <p>p3</p>    <h2>数量:{{count}}</h2>  </div>  <script>    new Vue({      el:"#app",      data:{        msg:'123',        list:['a','b','c'],        count:0      },      watch:{        msg:function(){          console.log("我变了");        }      },      beforeCreate(){        console.log("创建组件data对象之前自动触发~~~");        console.log("beforeCreated",this.msg);      },      created:function(){        console.log("创建组件data对象之后自动触发~~~");        this.msg=100000;        console.log("created",this.msg);         console.log("li数量:",document.getElementsByTagName("li").length);        console.log("p数量:",document.getElementsByTagName("p").length);        },      beforeMount:function(){        console.log(this.$el);        console.log("li数量:",document.getElementsByTagName("li").length);      },      mounted:function(){        console.log(this.$el);        console.log("li数量:",document.getElementsByTagName("li").length);        setInterval(()=>{          this.count++;        },1000)      },      beforeUpdate(){        console.log("更新组件的data变量前自动触发~~~")      },      updated(){        console.log("更新组件的data变量后自动触发~~~");        if(this.count>3){          this.$destroy();        }      },      beforeDestroy(){        console.log("销毁当前组件前自动触发~~~")      },      destroyed(){        console.log("销毁组件后自动触发~~~");      }    })  </script></body>

读到这里,这篇“Vue组件生命周期实例分析”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯