一、官方图解如下:
二、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的区别,写的比较简陋,记录下来,加深印象。
网友评论