-
先开始的八个钩子函数代码省略(下方有,可以复制自己跑一下),就是简单的调用输出,
外部代码如下 myVue.a=1; myVue.$destroy();
2.输出如下,疑问就是:
红圈内顺序我觉得 更新前-》更新完成-》销毁前-》已销毁
可是结果和我想的不一样 beforeUpdate页没有调用
3.代码
<body>
<div id=app>{{a}}</div>
<script>
var myVue = new Vue({
el: "#app",
data: {
a: "Vue.js"
},
beforeCreate: function() {
console.log("创建前");
},
created: function() {
console.log("创建之后");
},
beforeMount: function() {
console.log("mount之前")
},
mounted: function() {
console.log("mount之后")
},
beforeUpdate: function() {
console.log("更新前");
},
updated: function() {
console.log("更新完成");
},
beforeDestroy: function() {
console.log("销毁前");
},
destroyed: function() {
console.log("已销毁");
}
});
myVue.a = 1;
myVue.$destroy();
</script>
</body>
去测试了下,按照题主说的去测试,确实是这个顺序。
原因:
1、数据的修改如楼上所说,是放入到一个队列中等待执行。所以赋值完毕后,去执行销毁的方法,会立刻销毁掉这个实例。触发了销毁的钩子,
2、修改代码如下
钩子执行顺序就是:更新前,更新,销毁前,销毁。
3、
发现vm里data里面的mes 是修改成功了。但是,页面没有更新了。