美文网首页vuejavascript
vue之mounted和created的区别

vue之mounted和created的区别

作者: world_7735 | 来源:发表于2018-07-16 13:15 被阅读70次

一、官方图解如下:

二、created和mounted区别?
我们从图中看两个节点:

  • created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
  • mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

其实两者比较好理解,通常created使用的次数多一般用于接口获取数据,而mounted通常是在一些插件的使用或者组件的使用中进行操作,比如插件chart.js的使用: var ctx = document.getElementById(ID) ;通常会有这一步,而如果你写入组件中,你会发现在created中无法对chart进行一些初始化配置,一定要等这个html渲染完后才可以进行,那么mounted就是不二之选。下面看一个例子(用组件)。

三、实例如下

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<div id="example1">
  <demo1></demo1>
</div>
</body>
</html>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<script type="text/javascript">
  var Child={
    data:function(){  
            return {  
              name:"",  
              age:"",  
              city:""  
                 }  
        }, 
    template:"<div id='kkk'>我的名字是:{{name}},我的年龄是:{{age}},所在城市:{{city}}</div>",
    created:function(){  
          this.name="王爽"  
          this.age = "45"  
          this.city ="北京"  

          var x = document.getElementById("kkk")//第一个命令台错误  
          console.log(x.innerHTML);  
        },  

    mounted:function(){  
      var x = document.getElementById("kkk")//第二个命令台输出的结果  
      console.log(x.innerHTML);  
    }  
  }
var vm = new Vue({  
    el:"#example1", 
    components: {
        'demo1': Child
      }
})
</script>

可以看到输出如下:


可以看到都在created赋予初始值的情况下成功渲染出来了。

但是同时看console台如下:

可以看到第一个报了错,实际是因为找不到id,getElementById(ID) 并没有找到元素,原因如下:
在created的时候,视图中的html并没有渲染出来,所以此时如果直接去操作html的dom节点,一定找不到相关的元素而在mounted中,由于此时html已经渲染出来了,所以可以直接操作dom节点,故输出了上图结果。

以上就是我自己总结的mounted和mounted的区别,写的比较简陋,记录下来,加深印象。

相关文章

网友评论

    本文标题:vue之mounted和created的区别

    本文链接:https://www.haomeiwen.com/subject/xogvpftx.html