Vue组件与生命周期详细讲解

 更新时间:2022年10月17日 17:13:27   作者:爱思考的猪  
Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期

写在前面

Vue.js的核心就是以简洁的模板语法将数据渲染进Dom系统。vue实例在渲染成html的时候往往要经过以下的步骤:

  • 读取数据和方法,设置数据绑定和监听
  • 解析template
  • 将实例挂载到Dom,并将实例状态和视图绑定,在执行这些步骤的时候,vue还提供了一些生命周期的方法,用来在不同的阶段对代码做增添和修改。

生命周期

  • beforeCreate

vue实例初始化,数据监听和方法属性挂载之前调用

  • created

数据监听和方法属性挂载之后调用,是最早可以获取和操作数据及方法的数据

  • beforeMounted

template解析之后调用,这个时候实例还没挂载到dom上

  • mounted

replace el之后调用,实例已经挂载到dom上,是最早可以操作dom的时候

  • beforeUpdate

组件中的数据发生变化的时候执行,此时数据已经和页面保持同步,只是页面还没更新

  • updated

数据更新后,页面也是最新的

  • beforeDestroy

实例销毁之前调用,实例上的方法和属性还可以调用

  • destroyed

实例已经销毁,实例上的东西已经不可以使用

图解

问: 什么时候可以操作dom?

outer html(直接渲染在根节点下面的)在beforcreate阶段就可以操作,使用template渲染的要在mounted阶段才可以操作

  <div id='app'>
    <span id='span1'> 直接渲染的文字 </span>
    <span id='span2'> {{message}} <span>
    <com id='span3'></com>
  </div>
  <script>
    function deepClone(obj){
      return obj && JSON.parse(JSON.stringify(obj));
    };
    </script>
<script>
  function test(stage) {
    var span1 = document.getElementById('span1');
    var span2 = document.getElementById('span2');
    var span3 = document.getElementById('span3');
    debugger;
  };
  Vue.component('com', {
    template: '<span>使用template渲染的文字</span>'
  });
  var vm = new Vue({
    el:'#app',
    data: {
      message: 'hello vue!'
    },
    beforeCreate() {
      test('beforeCreate');
    },
    created() {
      test('created');
    },
    beforeMount() {
      test('beforeMount');
    },
    mounted() {
      test('mounted');
    }
  });
</script>

beforeCreate阶段、created阶段、beforeMount阶段

可以操作outer html但获取不到data中的数据,template这个时候还没渲染,无法被获取到

mounted阶段

mounted阶段页面已经渲染完毕,可以操作所有的dom

总结

  1. created阶段将数据和事件注入,并完成了数据观测,是最早可以获取和使用data、method的时候
  2. beforeMount阶段进行template的解析和渲染
  3. mounted阶段将实例注入dom,是最早可以操作dom的时候
  4. beforeMount在数据发生变化后执行,数据已经更新
  5. mounted阶段在视图更新后执行,数据和页面已经同步
  6. beforDestroy在实例/组件销毁之前执行,还可以使用组件的方法和属性
  7. destroyed 实例销毁后执行,不能再使用实例

组件的生命周期还有actived和deactived是keep-alive的专属。

到此这篇关于Vue组件与生命周期详细讲解的文章就介绍到这了,更多相关Vue组件与生命周期内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Vue封装通过API调用的组件的方法详解

    Vue封装通过API调用的组件的方法详解

    在日常业务开发中我们会经常封装一些业务组件,下面这篇文章主要给大家介绍了关于Vue封装通过API调用的组件的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • vue3 emits事件使用示例详解

    vue3 emits事件使用示例详解

    这篇文章主要为大家介绍了vue3 emits事件使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • webpack+vuex+axios 跨域请求数据的示例代码

    webpack+vuex+axios 跨域请求数据的示例代码

    本篇文章主要介绍了webpack+vuex+axios 跨域请求数据,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • 解决vuex数据丢失问题

    解决vuex数据丢失问题

    本文主要介绍了解决vuex 数据丢失问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • vue-virtual-scroll-list虚拟组件实现思路详解

    vue-virtual-scroll-list虚拟组件实现思路详解

    这篇文章主要给大家介绍了关于vue-virtual-scroll-list虚拟组件实现思路的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-02-02
  • vue.js实现含搜索的多种复选框(附源码)

    vue.js实现含搜索的多种复选框(附源码)

    这篇文章主要给大家介绍了利用vue.js实现含搜索的多种复选框的相关资料,文中给出了简单的介绍,但提供了完整的实例源码供大家下载学习,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • 详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别

    详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别

    这篇文章主要介绍了详谈Vue.js框架下main.js,App.vue,page/index.vue之间的区别,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • vue单文件组件lint error自动fix与styleLint报错自动fix详解

    vue单文件组件lint error自动fix与styleLint报错自动fix详解

    这篇文章主要给大家介绍了关于vue单文件组件lint error自动fix与styleLint报错自动fix的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • 对vue里函数的调用顺序介绍

    对vue里函数的调用顺序介绍

    下面小编就为大家分享一篇对vue里函数的调用顺序介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • 全新打包工具parcel零配置vue开发脚手架

    全新打包工具parcel零配置vue开发脚手架

    parcel-vue 一个基于Parcel打包工具的 VueJS急速开发脚手架解决方案,强烈建议使用node8.0以上。下面通过本文给大家介绍全新打包工具parcel零配置vue开发脚手架的相关知识,感兴趣的朋友一起看看吧
    2018-01-01

最新评论