唐山网站建设优化方法,免费申请微信收款码,wordpress 怎么安装主题,洪梅网站建设公司目录
一、引出生命周期
二、生命周期_挂载流程
三、生命周期_更新流程
四、生命周期_销毁流程
五、生命周期_总结
一、引出生命周期
生命周期#xff1a; 1.又名#xff1a;生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么#xff1a;Vue在关键时刻帮我们调…目录
一、引出生命周期
二、生命周期_挂载流程
三、生命周期_更新流程
四、生命周期_销毁流程
五、生命周期_总结
一、引出生命周期
生命周期 1.又名生命周期回调函数、生命周期函数、生命周期钩子。 2.是什么Vue在关键时刻帮我们调用的一些特殊名称的函数。 3.生命周期函数的名字不可更改但函数的具体内容是程序员根据需求编写的。 4.生命周期函数中的this 指向是vm 或 组件实例对象。
Vue完成模板的解析并把初始的真实的DOM元素放入页面后挂载完毕调用mounted
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgetitledocument/titlescript srchttps://cdn.jsdelivr.net/npm/vue2/dist/vue.js/script
/head
body div idrooth2 v-ifa你好啊/h2!-- {opacity}为{opacity: opacity}的简写形式第一个opacity为属性第二个为属性值 --h2 :style{opacity}欢迎学习Vue/h2!-- {{change()}} --/divscript typetext/javascript Vue.config.productionTip falseconst vm new Vue({el:#root,data:{opacity:1,a:false,},methods:{/* change(){setInterval((){this.opacity - 0.01if(this.opacity 0) this.opacity 1},16)}, */},// Vue完成模板的解析并把初始的真实的DOM元素放入页面后(挂载完毕)调用mountedmounted() {console.log(mounted,this);//此处的this是vue实例setInterval((){vm.opacity - 0.01if(vm.opacity 0) vm.opacity 1},16)}, })// 通过外部的定时器实现不推荐/* setInterval((){vm.opacity - 0.01if(vm.opacity 0) vm.opacity 1},16) *//script
/body
/html
二、生命周期_挂载流程 !DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src./js/vue.js/script/head
body!-- 准备好一个容器 --div idrooth2 v-iffalse你好啊/h2h2 :style{opacity}欢迎学习 Vue/h2h2当前的n值是{{n}}/h2button clickadd点我 n1/button/divscript typetext/javascriptconst vm new Vue({el: #root,// template: // div// h2当前的n值是{{n}}/h2// button clickadd点我 n1/button// /div// ,data: {opacity:1,n: 1},methods: {add(){this.n}},beforeCreate() {console.log(beforeCreate)// console.log(this);// debugger},created() {console.log(created)// console.log(this);// debugger},beforeMount() {console.log(beforeMount)// console.log(this);// debugger },mounted(){console.log(mounted)// console.log(this);// debugger /* setInterval(() {this.opacity - 0.01if (this.opacity 0) {this.opacity 1}}, 16) */}}) /script
/body
/html
三、生命周期_更新流程
在哪个生命周期 钩子中页面与数据尚未不同步 beforeUpdate
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src./js/vue.js/script/head
body!-- 准备好一个容器 --div idrooth2 v-iffalse你好啊/h2h2 :style{opacity}欢迎学习 Vue/h2h2当前的n值是{{n}}/h2button clickadd点我 n1/button/divscript typetext/javascriptconst vm new Vue({el: #root,// template: // div// h2当前的n值是{{n}}/h2// button clickadd点我 n1/button// /div// ,data: {opacity:1,n: 1},methods: {add(){this.n}},beforeCreate() {console.log(beforeCreate)// console.log(this);// debugger},created() {console.log(created)// console.log(this);// debugger},beforeMount() {console.log(beforeMount)// console.log(this);// debugger },mounted(){console.log(mounted,this.$el,this.$el instanceof HTMLElement)// console.log(this);// debugger /* setInterval(() {this.opacity - 0.01if (this.opacity 0) {this.opacity 1}}, 16) */},beforeUpdate() {console.log(beforeUpdate)// console.log(this.n); //点击按钮 此时已变成 2// debugger},updated() {console.log(updated)debugger},}) /script
/body
/html
四、生命周期_销毁流程
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src./js/vue.js/script/head
body!-- 准备好一个容器 --div idrooth2 v-iffalse你好啊/h2h2 :style{opacity}欢迎学习 Vue/h2h2当前的n值是{{n}}/h2button clickadd点我 n1/buttonbutton clickbye点我销毁vm/button/divscript typetext/javascriptconst vm new Vue({el: #root,// template: // div// h2当前的n值是{{n}}/h2// button clickadd点我 n1/button// /div// ,data: {opacity:1,n: 1},methods: {add(){console.log(add);this.n},bye(){console.log(bye);this.$destroy()}},beforeCreate() {console.log(beforeCreate)// console.log(this);// debugger},created() {console.log(created)// console.log(this);// debugger},beforeMount() {console.log(beforeMount)// console.log(this);// debugger },mounted(){console.log(mounted,this.$el,this.$el instanceof HTMLElement)// console.log(this);// debugger /* setInterval(() {this.opacity - 0.01if (this.opacity 0) {this.opacity 1}}, 16) */},beforeUpdate() {console.log(beforeUpdate)// console.log(this.n); //点击按钮 此时已变成 2// debugger},updated() {console.log(updated)// debugger},beforeDestroy() {console.log(beforeDestroy)console.log(this.n)this.add() //仍可使用 add但对数据触发的操作不再更新所以页面中 的n不会改变},destroyed() {console.log(destroyed)},}) /script
/body
/html五、生命周期_总结
上面一共讲了8 个生命周期也就是4 对生命周期
beforeCreate 与 created 指数据检测与数据代理创建之前和之后
beforeMount 与 Mounted
beforeUpdate 与 updated
beforeDestroy 与 destroy
常用的生命周期钩子 1.mounted: 发送ajax请求、启动定时器、绑定自定义事件、订阅消息等【初始化操作】。 2.beforeDestroy: 清除定时器、解绑自定义事件、取消订阅消息等【收尾工作】。 关于销毁Vue实例 1. 销毁后借助Vue开发者工具看不到任何信息。 2. 销毁后自定义事件会失效但原生DOM事件依然有效。 3. 一般不会在beforeDestroy 操作数据因为即便操作数据也不会再触发更新流程了。
!DOCTYPE html
html langen
headmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/titlescript src./js/vue.js/script/head
body!-- 准备好一个容器 --div idroot!-- 需求点击按钮停止变换 --h2 :style{opacity}欢迎学习 Vue/h2button clickopacity 1透明度设置为1/buttonbutton clickstop停止变换/button/divscript typetext/javascriptconst vm new Vue({el: #root,data: {opacity:1,},methods: {stop(){this.$destroy()}},mounted(){ this.timer setInterval(() {this.opacity - 0.01console.log(定时器);if (this.opacity 0) {this.opacity 1}}, 16)},beforeDestroy() {console.log();clearInterval(this.timer)}, }) /script
/body
/html