<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
1.初始化
1.beforeCreate()
2.created()
2.掛載(頁面渲染)
1.beforeMount()
2.mounted()
3.更新
1.beforeUpdate()
2.updated()
4.銷燬
1.beforeDestory()
2.destoryed()
beforeCreate()
:可以設定全域性事件匯流排,後面會講到先提一嘴
mounted()
: 可以在此階段傳送ajax請求, 啟動定時器、繫結自定義事件、訂閱訊息等非同步任務【初始化操作】
beforeDestroy()
: 在此階段做收尾工作, 如: 清除定時器、解綁自定義事件、取消訂閱訊息等【首尾工作】
beforeDestroy
運算元據,因為即使運算元據,也不會再觸發更新流程了。1.載入渲染的過程
父beforeCreate ==> 父created ==> 父beforeMount ==> 子beforeCreate ==> 子created ==> 子beforeMount ==> 子mounted ==> 父mounted
2.更新的過程
父beforeUpdate ==> 子beforeUpdate ==> 子updated ==> 父updated
3.銷燬過程
父beforeDestroy ==> 子beforeDestroy ==> 子destroyed ==> 父destroyed
<div id="root"> <!-- 讓h3透明度產生過渡的效果 --> <h3 :style="{opacity:opacity}">歡迎學習Vue!</h3> <button @click="des">點選我銷燬</button> </div> <script> Vue.config.productionTip = false let vm = new Vue({ el: '#root', data: { opacity: 1 }, methods: { des(){ // 觸發此函數必定呼叫,beforeDestroy(),destroyed() this.$destroy() } }, mounted() { //掛載 /* - 完成模板解析後並且將初始的真實的DOM元素掛載到頁面後,才執行的函數 只會執行一次 - this指向Vue - 開發中常用的方法,當我們想要讀取某個屬性但是讀不到,就可以 將該屬性繫結到共同能夠存取到的元素上,例如下面定時器的例子 */ this.timer = setInterval(() => { this.opacity -= 0.01 if (this.opacity <= 0) this.opacity = 1 }, 10); }, beforeDestroy() { console.log("beforeDestroy - 清除定時器"); clearInterval(this.timer) }, destroyed() { console.log("destroyed - 銷燬完畢") }, }) </script>
<div id="root"> <h3>n的值為:{{n}}</h3> <button @click="add">點選我n+1</button> <button @click="remove">點選銷燬vm</button> </div> <script> Vue.config.productionTip = false let vm = new Vue({ el: '#root', data: { n:1 }, methods: { add(){ this.n++ }, remove(){ this.$destroy() } }, beforeCreate() { /* 此時初始化生命週期,事件等,資料代理還未開始 vm無法存取到data中的資料,methods中的方法 */ console.log("beforeCreate"); //console.log(this.n); //undefined // console.log(this.add()); // this.add is not a function // debugger }, created() { /* 已經完成了初始化的資料監視和資料代理 vm可以存取到data中的資料和methods的方法 */ console.log("created"); // console.log(this.n); // 1 // console.log(this.add()); // undefined // debugger }, beforeMount() { /* 掛載之前,也就是圖中的判斷框裡執行的,此階段是Vue 在解析模板並且生成虛擬DOM儲存在記憶體當中,頁面還不能 看到解析後的樣子 */ console.log("beforeMount"); // debugger }, mounted() { /* 完成模板解析後並且將初始的真實的DOM元素掛載到頁面後,才執行的函數 一般在此:開啟一些定時器、傳送網路請求、訂閱訊息、 繫結自定義事件等等初始化 */ console.log("mounted"); // debugger }, beforeUpdate() { /* 當資料發生更新後,此時資料已經更新完成,但是頁面 還是未更新的。 也就是面試所問的:頁面和尚未和資料保持同步的階段 */ console.log("beforeUpdate"); }, updated() { /* 在這之前會進行新舊虛擬DOM比較,最終完成頁面的更新 此階段就是頁面和資料保持同步 */ console.log("updated"); }, beforeDestroy() { /* 當我們呼叫vm.$destroy時,才會執行下面兩個函數, 馬上要執行銷燬階段,一般在這個階段做一些收尾操作 比如:關掉定時器,取消訂閱,解綁自定義事件 */ console.log("beforeDestroy"); }, destroyed() { /* 所有的指令,所有的自定義事件監聽器都沒了(只留下原生的dom的事件) */ console.log("destroyed"); }, }) </script>
以上就是今天要講的內容,本文介紹了生命週期的相關知識,希望對大家有所幫助!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45