Vue组件生命周期(面试常问,最讨厌的部分了吧,一直记不下来的来看看)
2018-12-21 15:24
337 查看
直接上代码,运行来看吧,看起来直观一点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./vue.js"></script> </head> <body> <div id="app"> <p>{{info}}</p> <button @click="info='hello1'">更新info</button> <button @click="destroy">销毁实例</button> </div> <script> var vm = new Vue({ el: "#app", data: { info: "hello" }, // 在实例初始化之后,数据观测 (data observer) 和 event/watcher 配置之前被调用。 beforeCreate: function () { console.log("===============beforeCreate============================================") // $el表示Vue 实例使用的根 DOM 元素。 console.log('$el', this.$el); // $data Vue 实例观察的数据对象 console.log('$data', this.$data); console.log("info:", this.info) }, // 在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,dom还未生成,$el 属性目前不可见。 created: function () { console.log("===============created=======================================") console.log('$el', this.$el); console.log('$data', this.$data); console.log("info:", this.info) }, // 模板编译挂载之前调用,首先会判断对象是否有el选项。如果有的话就继续向下编译,如果没有el选项,则停止编译,也就意味着停止了生命周期,直到在该vue实例上调用vm.$mount(el)。接着判断是否有template属性,有的话就以template属性中的值作为模板,如果没有的话,就以el属性指向的作为模板。这里会生成vm.$el,但指令尚未被解析 beforeMount: function () { console.log("===============beforeMount=========================================") console.log('$el', this.$el); console.log('$data', this.$data); console.log("info:", this.info) }, // 模板编译挂载之后调用,vm.$el替换掉el指向的dom mounted: function () { console.log("===============mounted===========================================") console.log('$el', this.$el); console.log('$data', this.$data); console.log("info:", this.info) }, // 数据变更导致虚拟DOM重新渲染之前调用 beforeUpdate: function () { console.log("===============beforeUpdate============================================"); }, // 数据变更导致虚拟DOM重新渲染之后调用 updated: function () { console.log("===============updated======================================================"); }, // 实例销毁之前调用,在这一步,实例完全可用 beforeDestroy: function () { console.log("===============beforeDestroy===============================================") console.log('$el', this.$el); console.log('$data', this.$data); console.log("info:", this.info) }, // vue实例指向的所有东西解除绑定,包括watcher、事件、所以的子组件,后续就不再受vue实例控制了 destroyed: function () { console.log("===============destroyed================================================") console.log('$el', this.$el); console.log('$data', this.$data); console.log("info:", this.info) }, methods: { destroy() { // 表示销毁组件 this.$destroy() }, udpateinfo() { this.info = 'hello2' } } }) </script> </body> </html>
相关文章推荐
- Vue父子组件生命周期
- 深入理解Vue生命周期、手动挂载及挂载子组件
- vue之组件的生命周期
- Vue.js学习(四):父子组件中的生命周期与钩子函数的调用顺序
- vue组件生命周期详解
- Vue--父组件传数据给子组件,子组件生命周期过程拿到数据的情况
- vue组件的生命周期
- vue组件的生命周期
- 我一直想把自己的一些技术心得保留下来,以便以后可以看看自己的历程。
- VUE实例的生命周期与VUE组件的生命周期
- Vue2.0的变化 ,组件模板,生命周期,循环,自定义键盘指令,过滤器
- vue 组件与通信与vuex与computed与生命周期(1)
- Vue 组件 生命周期函数mounted
- 面试总结:Vue的生命周期
- GitHub上获得26236个Star的Java面试项目,看看你都会哪几个部分?
- Vue--组件部分
- vue生命周期及使用 && 单文件组件下的生命周期
- Vue 子组件的异步加载及其生命周期控制
- ASP.NET生命周期(面试必考,比较难记,索性拍下来分享给大家)
- vue 重温一下vue运行生命周期,与分子组件事件分发