中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VUE中的自定義指令鉤子函數怎么使用

發布時間:2022-08-15 16:11:05 來源:億速云 閱讀:267 作者:iii 欄目:開發技術

這篇文章主要介紹“VUE中的自定義指令鉤子函數怎么使用”,在日常操作中,相信很多人在VUE中的自定義指令鉤子函數怎么使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”VUE中的自定義指令鉤子函數怎么使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    自定義指令鉤子函數

    自定義指令

    除了VUE 內置指令外,VUE也支持我們自定義注冊指令,分為局部和全局注冊 但這些想必大家都不陌生,其中官方API也是寫的明明白白 官方API點這里

    而且自定義指令也會極大程度上幫助我們日常的編程,但這是很有意思的事情出現了,就是鉤子函數,很多老鐵都弄不明白這五個函數的具體區別

    先上官方解釋

    • bind:只調用一次,指令第一次綁定到元素時調用。在這里可以進行一次性的初始化設置。

    • inserted:被綁定元素插入父節點時調用 (僅保證父節點存在,但不一定已被插入文檔中)。

    • update:所在組件的 VNode 更新時調用,但是可能發生在其子 VNode 更新之前。指令的值可能發生了改變,也可能沒有。但是你可以通過比較更新前后的值來忽略不必要的模板更新 (詳細的鉤子函數參數見下)。

    • componentUpdated:指令所在組件的 VNode 及其子 VNode 全部更新后調用。

    • unbind:只調用一次,指令與元素解綁時調用。

    之前有個朋友問我 每個字都認識 連起來就不明白了QAQ 因此這里給大家結合栗子來演示下 這五個過程

    webpack 框架

    App.vue

    <template>
      <div class="container">
          <div class="row">
              <div class="col-xs-12">
               <!-局部這側的組件->
                  <app-test v-if="btn" :text="text"></app-test>
                <button @click="create">加載</button>
                <button @click="update">更新</button>
                <button @click="destory">關閉</button>
              </div>
          </div>
      </div>
    </template>
    <script>
        export default {
            data() {
                return {
                    btn:true,
                    text:'hello',
                }
            },
            components: {
                appTest: {
                // v-test 就是自定義指令  具體在main.js中看
                    template: '<h2 v-test>{{text}}</h2>',
                    props: {
                        text: String
                    }
                }
            },
            methods: {
                //創建的方法
                create(){
                    this.btn=true
                },
                //更新組件內容
                update(){
                    this.text='hi'
                },
                //利用內部指令摧毀組件
                destory(){
                    this.btn=false
                }
            },
        }
    </script>

    main.js

    import Vue from 'vue'
    import App from './App.vue'
    //全局注冊自定義指令  在每個鉤子函數輸出相應內容
    //其中為了區分bind ,inserted 還相應輸出元素的父節點
    //為了區本update,componentUpdated 還想贏輸出元素內容
    Vue.directive('test', {
      bind: function (el) {
        console.log('bind');
        console.log(el.parentNode)
      },
      inserted: function (el) {
        console.log('inserted');
        console.log(el.parentNode)
      },
      update: function (el) {
        console.log('update');
        console.log(el.innerHTML)
      },
      componentUpdated: function (el) {
        console.log('componentUpdated')
        console.log(el.innerHTML)
      },
      unbind: function (el) {
        console.log('unbind')
      }
    })
    new Vue({
      el: '#app',
      render: h => h(App)
    })

    OK 運行 首先我們看到控制臺輸出

    加載

    bind
     null
     inserted
     <div class="col-xs-12">…</div>

    這時候我們可以判斷首先加載時會經歷這兩個鉤子函數,分別對應第一次綁定,和父元素加載完畢

    按下更新按鈕

    updata
    hello
    componentUpdated
    hi

    這時候我們可以判斷節點內容更新時會經歷這兩個鉤子函數,分別對應更新前,和更新后

    按下關閉

    unbind

    階段銷毀時經歷unbind鉤子函數

    按下加載

    bind
     null
     inserted
     <div class="col-xs-12">…</div>

    再次看下加載

    小貼士

    這時我們應該可以弄明白鉤子函數

    但其實大多數情況 我們只希望節點在加載和更新時發生同樣的事情,而忽略其它鉤子函數,可以這么寫

    Vue.directive('color-swatch', function (el, binding) {
        el.style.backgroundColor = binding.value
    })

    鉤子函數運行順序

    在vue中,實例選項和鉤子函數和{{}}表達式都是不需要手動調用就可以直接執行的。 

    VUE中的自定義指令鉤子函數怎么使用

    在頁面首次加載執行順序有如下:

    • beforeCreate //在實例初始化之后、創建之前執行

    • created //實例創建后執行

    • beforeMounted //在掛載開始之前調用

    • filters //掛載前加載過濾器

    • computed //計算屬性

    • directives-bind //只調用一次,在指令第一次綁定到元素時調用

    • directives-inserted //被綁定元素插入父節點時調用

    • activated //keek-alive組件被激活時調用,則在keep-alive包裹的嵌套的子組件中觸發

    • mounted //掛載完成后調用

    • {{}} //mustache表達式渲染頁面

    修改頁面input時,被自動調用的選項順序如下:

    • watch //首先先監聽到了改變事件

    • filters //過濾器沒有添加在該input元素上,但是也被調用了

    • beforeUpdate //數據更新時調用,發生在虛擬dom打補丁前

    • directived-update //指令所在的組件的vNode更新時調用,但可能發生在其子vNode更新前

    • directives-componentUpdated//指令所在的組件的vNode及其子組件的vNode全部更新后調用

    • updated //組件dom已經更新

    組件銷毀時,執行順序如下:

    • beforeDestroy //實例銷毀之前調用

    • directives-unbind //指令與元素解綁時調用,只調用一次

    • deactivated //keep-alive組件停用時調用

    • destroyed //實例銷毀之后調用

    到此,關于“VUE中的自定義指令鉤子函數怎么使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    vue
    AI

    吉木乃县| 屏山县| 永定县| 台安县| 张家口市| 米泉市| 北碚区| 社旗县| 隆化县| 成都市| 宁蒗| 横峰县| 万盛区| 青河县| 兴国县| 邢台县| 区。| 长春市| 大连市| 镇赉县| 宜城市| 化隆| 泰和县| 蒙城县| 平原县| 淮南市| 上犹县| 阿坝| 东乌| 冷水江市| 厦门市| 太仆寺旗| 九寨沟县| 大邑县| 股票| 怀化市| 霸州市| 东兰县| 北辰区| 桂平市| 东莞市|