vue生命周期: 一个vue对象从创建到销毁所经历的整个过程, 在这个过程中, vue会在特定的时刻主动调用一些函数, 这些函数叫做生命周期函数 或 生命周期钩子
<body> <script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script> <div id='myApp'> <button @click="()=>{obj.age++}">{{obj.age}}</button> </div> <script> var vm = new Vue({ el: '#myApp', // 根标签 data: { obj: {age:20} }, // 动态数据 methods: { }, // 自定义函数 filters: {}, // 过滤器 computed: {}, // 计算属性 watch: {}, // 监视器 // vue中除了以上几个常用字段之外,还提供了以下8个生命周期函数 beforeCreate() { // beforeCreate调用时, 栈内存已经确定了一个内存地址,用于存放这vue对象, 但此时,vue对象虽然有内存地址,但还未创建完成, 里边的数据还未定义, 所以,this有值, this.obj没值 console.log(1, "vue对象还没有创建", this, this.obj) }, created() { // 一般在这里发起ajax请求, 得到数据, 赋值到data中 console.log(2, "vue对象已经创建", this, this.obj) fetch("./goodList.json").then(res=>{ return res.json() }).then(res=>{ console.log(res) }) }, beforeMount() { console.log(3, "vue中的数据还没有渲染到视图上") }, mounted() { console.log(4, "vue中的数据已经渲染到视图上") }, beforeUpdate() { console.log(5, 'data数据更新之前') }, updated() { console.log(6, 'data数据更新之后') }, beforeDestroy() { // 如果一个页面中有window的事件监听, 或计时器, 一定要在销毁时停掉 console.log(7, "vue对象将要被销毁") }, destroyed() { console.log(8, "vue对象已经被销毁") } // 总结: vue的生命周期钩子 // beforeCreate, created, beforeMount, mounted, beforeUpdate, updated, beforeDeatroy, destroyed }) // 2秒后, 销毁vue对象 setTimeout(() => { vm.$destroy() }, 2000); setTimeout(() => { // vue对象销毁后, 依然可以调用, 但更新的生命周期函数不存在了,无法调用 console.log(vm, vm.obj.age) }, 3000); </script></body>