<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] >[success] # Vue -- 生命周期 ![](https://box.kancloud.cn/e374533874ae3d7e1c4958e407128be3_2498x2798.png) ~~~ 1.從Vue實例創建、運行、到銷毀期間,總是伴隨著各種各樣的事件,這些事件,統稱為生命周期 2.生命周期鉤子就是生命周期事件的別名而已; 3.生命周期鉤子 = 生命周期函數 = 生命周期事件 ~~~ >[danger] ##### 中文簡潔版本 ~~~ 1.看中文簡介版本需要對照下面給的代碼,根據注解和代碼去對應 2.首先要知道,綁定渲染的dom不止有el中綁定形式,還有實例對象調用$mount 3.綁定后會接著往下找看有沒有template 設置,有和沒有會執行兩種,也就是說 有template 就只會渲染template中的內容,并且覆蓋掉el中的內容 4.但是即使向第三條那樣使用template,el會被覆蓋,也必須寫el,但是可以不用 再里面寫操作,原因是聲明周期先找el,在根據渲染el 和template在選擇 5.template 只能有一個根元素,想多個就給有if 或者show 弄成單個顯示 6.beforeCreate、created、beforeMount、mounted 他們四個是創建生命周期一 條龍,后續當我們去改變數據,這些聲明周期都不會在執行,除非刷新頁面重新 讓生命周期繼續; 7.而改變值讓頁面跟著一起變化的是beforeUpdate 、updated他倆在虛擬dom 中,改變就觸發,但最好不用,因為有watch 和計算屬性都可以做到,所以這個 生命周期中一般不做操作 8.這里要最重要的說明beforeUpdate 、updated第一次刷新頁面的生命周期不執 行。只有數據更新虛擬dom監聽到才執行 ~~~ * 對照的代碼 ~~~ 1.打上斷點更方便理解 ~~~ ~~~ <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue@2.5.22/dist/vue.js"></script> </head> <body> <div id="app"> <button @click="dom">增加dom</button> <p v-for="i,index in list" ref="plist">{{i}}</p> <p ref="pHtml">我好</p> <!--<template id="ss">--> <!--template 渲染區域--> <!--</template>--> </div> <script> // 創建 Vue 實例,得到 ViewModel // vm.$mount('#app') 不常用,一般用el var vm = new Vue({ el: '#app', // template:'#ss', template 渲染 data: { list: ['as', 'bs', 'cs'], }, methods:{ dom(){ this.list.push('ds'); }, }, beforeCreate(){ debugger; }, created(){ debugger; }, beforeMount(){ debugger; }, mounted(){ debugger; }, beforeUpdate(){ debugger; }, updated(){ debugger; }, beforeDestroy(){ debugger; }, destroyed(){ debugger; } }); </script> </body> </html> ~~~ ![](https://box.kancloud.cn/475dba76050b004fd2283f26747f16d9_1140x1845.png) >[danger] ##### 主要的生命周期函數分類 ~~~ 創建期間的生命周期函數: + beforeCreate:實例剛在內存中被創建出來,此時,還沒有初始化好 data 和 methods 屬性 + created:實例已經在內存中創建OK,此時 data 和 methods 已經創建OK,此時還沒有開始 編譯模板 + beforeMount:此時已經完成了模板的編譯,但是還沒有掛載到頁面中 + mounted:此時,已經將編譯好的模板,掛載到了頁面指定的容器中顯示 - 運行期間的生命周期函數: + beforeUpdate:狀態更新之前執行此函數, 此時 data 中的狀態值是最新的,但是界面上顯示的 數據還是舊的,因為此時還沒有開始重新渲染DOM節點 + updated:實例更新完畢之后調用此函數,此時 data 中的狀態值 和 界面上顯示的數據,都已經完成了更新,界面已經被重新渲染好了! - 銷毀期間的生命周期函數: + beforeDestroy:實例銷毀之前調用。在這一步,實例仍然完全可用。 + destroyed:Vue 實例銷毀后調用。調用后,Vue 實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。 ~~~ >[danger] ##### 另一種生命周期的說法 ~~~ beforeCreate(){ console.log("beforeCreate") }, created(){ console.log("created") //ajax 異步 }, beforeMount(){ console.log("beforeMount") //ajax 異步 }, mounted(){ console.log("mounted") // 監聽事件 ,獲取dom ,ajax // 開啟定時器 }, beforeUpdate(){ console.log("beforeUpdate") }, updated(){ console.log("updated") // 更新后真實dom 可以訪問了。 // 22222 }, beforeDestroy(){ console.log("beforeDestroy") }, destroyed(){ console.log("destroyed") //取消定時器, 解綁事件 } } ~~~ >[danger] ##### 面試問題 <a href='https://segmentfault.com/a/1190000013529404'>選自文章</a> ~~~ 1、什么是vue生命周期? 答: Vue 實例從創建到銷毀的過程,就是生命周期。也就是從開始創建、初始化數據、編譯模板、掛載Dom→渲染、更新→渲染、卸載等一系列過程,我們稱這是 Vue 的生命周期。 2、vue生命周期的作用是什么? 答:它的生命周期中有多個事件鉤子,讓我們在控制整個Vue實例的過程時更容易形成好的邏輯。 3、vue生命周期總共有幾個階段? 答:它可以總共分為8個階段:創建前/后, 載入前/后,更新前/后,銷毀前/銷毀后 4、第一次頁面加載會觸發哪幾個鉤子? 答:第一次頁面加載時會觸發 beforeCreate, created, beforeMount, mounted 這幾個鉤子 5、DOM 渲染在 哪個周期中就已經完成? 答:DOM 渲染在 mounted 中就已經完成了。 6、簡單描述每個周期具體適合哪些場景? 答:生命周期鉤子的一些使用方法: beforecreate : 可以在這加個loading事件,在加載實例時觸發 created : 初始化完成時的事件寫在這里,如在這結束loading事件,異步請求也適宜在這里調用 mounted : 掛載元素,獲取到DOM節點 updated : 如果對數據統一處理,在這里寫上相應函數 beforeDestroy : 可以做一個確認停止事件的確認框 nextTick : 更新數據后立即操作dom ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看