最近刚好在学习Vue.js,在实敲轮播demo时发现了一个当时感觉很奇怪的问题:
初始化使用mounted钩子时,只调用了一次,之后就没有调用过了。害我一直以为是自己之后的代码书写有问题,结果自己再敲一遍还是只能初始化调用一次。。。发现这个问题后找找大神们的博客看了看,发现了created钩子的使用。下面就将这次的经历给记录下来。

生命周期先上图

这里写图片描述

什么是生命周期

Vue实例有一个完整的生命周期,也就是从开始创建、初始化数据、编译模板、挂载Dom、渲染→更新→渲染、卸载等一系列过程,我们称这是Vue的生命周期。通俗说就是Vue实例从创建到销毁的过程,就是生命周期。

在Vue的整个生命周期中,它提供了一系列的事件,可以让我们在事件触发时注册js方法,可以让我们用自己注册的js方法控制整个大局,在这些事件响应方法中的this直接指向的是vue的实例。
再上图,对生命周期图的标注

这里写图片描述

我们从图中看两个节点:
created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
其实两者比较好理解,通常created使用的次数多,而mounted通常是在一些插件的使用或者组件的使用中进行操作,比如插件chart.js的使用: var ctx = document.getElementById(ID);通常会有这一步,而如果你写入组件中,你会发现在created中无法对chart进行一些初始化配置,一定要等这个html渲染完后才可以进行,那么mounted就是不二之选。下面看一个例子(用组件)。

例子
view plain copy

<span style="font-size:14px;">Vue.component("demo1",{  data:function(){  return {  name:"",  age:"",  city:""  }  },  template:"<ul><li id='name'>{{name}}</li><li>{{age}}</li><li>{{city}}</li></ul>",  created:function(){  this.name="唐浩益"  this.age = "12"  this.city ="杭州"  var x = document.getElementById("name")//第一个命令台错误  console.log(x.innerHTML);  },  mounted:function(){  var x = document.getElementById("name")/</span>/第二个命令台输出的结果<span style="font-size:14px;">  console.log(x.innerHTML);  }  });  var vm = new Vue({  el:"#example1"  })</span>

可以看到输出如下:

可以看到都在created赋予初始值的情况下成功渲染出来了。
但是同时看console台如下:

可以看到第一个报了错,实际是因为找不到id,getElementById(ID) 并没有找到元素,原因如下:
在created的时候,视图中的html并没有渲染出来,所以此时如果直接去操作html的dom节点,一定找不到相关的元素
而在mounted中,由于此时html已经渲染出来了,所以可以直接操作dom节点,故输出了结果“唐浩益”。
以上就是我自己总结的mounted和mounted的区别,写的比较简陋,记录下来,加深印象。

特别值得注意的是created钩子函数和mounted钩子函数的区别

  1. 每个钩子函数都在啥时间触发
    beforeCreate

  2. 在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。
    created

  3. 实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。
    beforeMount

  4. 在挂载开始之前被调用:相关的 render 函数首次被调用。
    mounted

  5. el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。
    beforeUpdate

  6. 数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。
    updated

  7. 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。
    当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。

  8. 该钩子在服务器端渲染期间不被调用。
    beforeDestroy

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

  10. Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

  • 总之呢,个人感觉初步感觉就是:created钩子每次加载完成后都可以重复执行;而mounted钩子只在页面第一次加载后才调用出来,只要el被加载过,之后的重复加载该页面就不会调用该钩子了

原文链接:https://blog.csdn.net/m0_37852904/article/details/78716409

Vue实例中生命周期created和mounted的区别(具体细节分析)。相关推荐

  1. vue 加载时掉用mounted_Vue实例中生命周期created和mounted的区别详解

    前言 本文主要跟大家介绍了关于Vue实例中生命周期created和mounted区别的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 生命周期先上图 什么是生命周期 Vue ...

  2. 关于Vue实例的生命周期created和mounted的区别

    关于作者 程序开发人员,不拘泥于语言与技术,目前主要从事PHP和前端开发,使用Laravel和VueJs,App端使用Apicloud混合式开发.合适和够用是最完美的追求. 个人网站:http://w ...

  3. 7、Vue实例的生命周期钩子(created、mounted、updated、destoryed)

    1.Vue实例 new Vue()创建一个Vue实例 所有的组件其实都是Vue实例 2.Vue实例的生命周期钩子 每个Vue实例在被创建时都要经过一系列的初始化过程 初始化过程 created() 组 ...

  4. Vue实例的生命周期

    vue实例的生命周期 什么是生命周期:从Vue实例创建.运行.到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期! 生命周期钩子:就是生命周期事件的别名而已: 生命周期钩子 = 生命周期函 ...

  5. 第五节:轻松掌握 vue 实例的生命周期

    公众号后台收到不少同学催更新,马上来. 上两节我们都是讲vue的实例,简单创建和定义实例的4个常用选项,没看过的伙伴可以先去看上两节,按顺序学习比较容易掌握. 这一节我们学习vue实例的生命周期,没错 ...

  6. 计算属性与监听器、Vue 实例的生命周期

    本文是我在学习过程中记录学习的点点滴滴,仅仅为了学完之后巩固一下,日后忘记了也可以方便快速的复习. 计算属性与监听器.Vue 实例的生命周期 前言 一.计算属性 1.1.计算属性初步理解 1.2.计算 ...

  7. vue实例的生命周期详解

    Vue实例的生命周期 简介 此篇文章说的是最简单的单个VUE组件的生命周期. 官网中的长图诠释了Vue实例从创建,运行到销毁的整个过程.从vue实例的创建,运行,销毁期间,总是伴随着各种各样的事件,这 ...

  8. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)...

    昨日内容回顾 0. 组件注意事项!!!data属性必须是一个函数!1. 注册全局组件Vue.component('组件名',{template: ``})var app = new Vue({el: ...

  9. vue实例以及生命周期

    1.Vue实例API 1.构造器(实例化) var vm = new Vue({ //选项 |-------DOM(3) | |-------el (提供一个在页面上已存在的 DOM 元素作为 Vue ...

最新文章

  1. wordpress 5.0.0 远程代码执行漏洞分析cve-2019-8943
  2. (一)golang工作区
  3. 如果你想精通一个行业,那必须进入这个行业
  4. java利用poi生成/读取excel表格
  5. C#.Net 使用 JsonReader/JsonWriter 高性能解析/生成 Json 文档
  6. Luogu2543[AHOI2004]奇怪的字符串 (动态规划 LCS)
  7. 让海底电缆给数据中心提供更快的直连
  8. 现代通信原理4.1:随机变量
  9. HHUOJ 1860 哆啦A梦的口袋
  10. 【盘点】最受欢迎十大中国风歌曲
  11. HTTP 417 错误 – 预期结果失败 (Expectation failed)
  12. JS对象(对象的创建、属性的增删改查、属性的检测和枚举)
  13. 电脑启动卡、慢,运行起来后,可能可以慢慢恢复正常问题的原因和解决方案
  14. mysql migration toolkit 使用_MySQL Migration Toolkit的使用
  15. 杨老师课堂_Java教程第一篇之认识计算机
  16. 冯诺曼伊体系 计算机五大逻辑,科学网—再谈冯·诺伊曼结构 - 姜咏江的博文
  17. 仿微信翻译----本地短信翻译。
  18. games101 作业4
  19. redis集群批量删除指定的key
  20. 【CCF-CSP201712-4】行车路线

热门文章

  1. 你真的了解显卡吗?显卡基础知识大扫盲
  2. ue unreal 虚幻 invalid HTTP response code received 问题
  3. 计算机考研英语大纲,考研计算机大纲
  4. Matlab调用百度API画地图讲解教程
  5. python 随手记
  6. 前端工具-Yeoman模板 + 接收用户输入
  7. 数据标注去哪接任务订单?靠谱的数据标注平台有哪些?
  8. CC2640R2F BLE5.0 蓝牙协议栈Off-Chip OAD功能
  9. dash 机器人 Android,用于 Dash 和 Dot 机器人的Blockly
  10. [Swift]LeetCode41. 缺失的第一个正数 | First Missing Positive