最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中directive的鉤子函數(shù)(bind,inserted等)用法及使用說明

 更新時(shí)間:2025年07月26日 11:37:23   作者:前端布洛芬  
Vue指令鉤子函數(shù)(bind、inserted等)用于在不同階段操作元素,bind綁定時(shí)初始化,inserted插入DOM后執(zhí)行,update值變化時(shí)觸發(fā),componentUpdated全部更新后調(diào)用,unbind解綁時(shí)清理,根據(jù)需求選擇對(duì)應(yīng)鉤子實(shí)現(xiàn)功能增強(qiáng)

Vue中directive的鉤子函數(shù)(bind,inserted等)用法

在 Vue 里,指令(directive)是個(gè)超實(shí)用的東西,它能讓你在不改動(dòng)組件邏輯的情況下,給 HTML 元素添加一些特殊的行為。Vue 指令有好幾個(gè)鉤子函數(shù),下面我就挨個(gè)給你講講這些鉤子函數(shù)的作用和使用場(chǎng)景,還會(huì)附上帶注釋的代碼示例。

1.bind鉤子函數(shù)

  • 作用bind 鉤子函數(shù)會(huì)在指令第一次綁定到元素上時(shí)調(diào)用,而且只調(diào)用一次。這時(shí)候你可以做一些初始化的操作,比如設(shè)置一些默認(rèn)值、添加事件監(jiān)聽器之類的。
  • 使用場(chǎng)景:當(dāng)你需要在指令綁定到元素時(shí)就進(jìn)行一些初始化操作,就可以用 bind 鉤子函數(shù)。
// 自定義一個(gè)名為 'focus' 的指令
Vue.directive('focus', {
  // bind 鉤子函數(shù),在指令第一次綁定到元素時(shí)調(diào)用
  bind: function (el) {
    // 給元素添加一個(gè)自定義屬性,用于標(biāo)記這個(gè)元素被綁定了 focus 指令
    el.setAttribute('data-focus', 'true');
    // 打印一條消息,提示指令已經(jīng)綁定到元素上
    console.log('指令已綁定到元素上');
  }
});

// 創(chuàng)建一個(gè) Vue 實(shí)例
new Vue({
  el: '#app',
  template: '<input v-focus>'
});

2.inserted鉤子函數(shù)

  • 作用inserted 鉤子函數(shù)會(huì)在綁定元素被插入到父節(jié)點(diǎn)時(shí)調(diào)用。注意,這里的父節(jié)點(diǎn)必須是存在于 DOM 中的。
  • 使用場(chǎng)景:當(dāng)你需要在元素插入到 DOM 后做一些操作,比如自動(dòng)聚焦、添加動(dòng)畫效果等,就可以用 inserted 鉤子函數(shù)。
// 自定義一個(gè)名為 'focus' 的指令
Vue.directive('focus', {
  // inserted 鉤子函數(shù),在綁定元素被插入到父節(jié)點(diǎn)時(shí)調(diào)用
  inserted: function (el) {
    // 讓元素自動(dòng)獲得焦點(diǎn)
    el.focus();
    // 打印一條消息,提示元素已經(jīng)插入到 DOM 中
    console.log('元素已插入到 DOM 中');
  }
});

// 創(chuàng)建一個(gè) Vue 實(shí)例
new Vue({
  el: '#app',
  template: '<input v-focus>'
});

3.update鉤子函數(shù)

  • 作用update 鉤子函數(shù)會(huì)在包含組件的 VNode 更新時(shí)調(diào)用,但可能發(fā)生在其子 VNode 更新之前。指令的值可能發(fā)生了改變,也可能沒有。
  • 使用場(chǎng)景:當(dāng)你需要在組件更新時(shí)對(duì)指令綁定的元素做一些操作,就可以用 update 鉤子函數(shù)。
// 自定義一個(gè)名為 'highlight' 的指令
Vue.directive('highlight', {
  // update 鉤子函數(shù),在包含組件的 VNode 更新時(shí)調(diào)用
  update: function (el, binding) {
    // 獲取指令的值
    const color = binding.value;
    // 設(shè)置元素的背景顏色為指令的值
    el.style.backgroundColor = color;
    // 打印一條消息,提示元素的背景顏色已更新
    console.log('元素的背景顏色已更新');
  }
});

// 創(chuàng)建一個(gè) Vue 實(shí)例
new Vue({
  el: '#app',
  data: {
    // 定義一個(gè)變量,用于存儲(chǔ)背景顏色
    highlightColor: 'yellow'
  },
  template: '<div v-highlight="highlightColor">這是一個(gè)高亮的 div</div>'
});

4.componentUpdated鉤子函數(shù)

  • 作用componentUpdated 鉤子函數(shù)會(huì)在包含組件的 VNode 及其子 VNode 全部更新后調(diào)用。
  • 使用場(chǎng)景:當(dāng)你需要在組件和其子組件都更新完成后對(duì)指令綁定的元素做一些操作,就可以用 componentUpdated 鉤子函數(shù)。
// 自定義一個(gè)名為 'highlight' 的指令
Vue.directive('highlight', {
  // componentUpdated 鉤子函數(shù),在包含組件的 VNode 及其子 VNode 全部更新后調(diào)用
  componentUpdated: function (el, binding) {
    // 獲取指令的值
    const color = binding.value;
    // 設(shè)置元素的背景顏色為指令的值
    el.style.backgroundColor = color;
    // 打印一條消息,提示元素的背景顏色已在組件更新后更新
    console.log('元素的背景顏色已在組件更新后更新');
  }
});

// 創(chuàng)建一個(gè) Vue 實(shí)例
new Vue({
  el: '#app',
  data: {
    // 定義一個(gè)變量,用于存儲(chǔ)背景顏色
    highlightColor: 'yellow'
  },
  template: '<div v-highlight="highlightColor">這是一個(gè)高亮的 div</div>'
});

5.unbind鉤子函數(shù)

  • 作用unbind 鉤子函數(shù)會(huì)在指令與元素解綁時(shí)調(diào)用,而且只調(diào)用一次。這時(shí)候你可以做一些清理工作,比如移除事件監(jiān)聽器。
  • 使用場(chǎng)景:當(dāng)你需要在指令與元素解綁時(shí)做一些清理工作,就可以用 unbind 鉤子函數(shù)。
// 自定義一個(gè)名為 'click-outside' 的指令
Vue.directive('click-outside', {
  // bind 鉤子函數(shù),在指令第一次綁定到元素時(shí)調(diào)用
  bind: function (el, binding, vnode) {
    // 定義一個(gè)點(diǎn)擊事件處理函數(shù)
    el.clickOutsideEvent = function (event) {
      // 判斷點(diǎn)擊事件是否發(fā)生在元素外部
      if (!(el === event.target || el.contains(event.target))) {
        // 如果點(diǎn)擊事件發(fā)生在元素外部,調(diào)用指令綁定的方法
        vnode.context[binding.expression](event);
      }
    };
    // 給 document 添加點(diǎn)擊事件監(jiān)聽器
    document.addEventListener('click', el.clickOutsideEvent);
  },
  // unbind 鉤子函數(shù),在指令與元素解綁時(shí)調(diào)用
  unbind: function (el) {
    // 移除 document 上的點(diǎn)擊事件監(jiān)聽器
    document.removeEventListener('click', el.clickOutsideEvent);
    // 刪除元素上的點(diǎn)擊事件處理函數(shù)
    delete el.clickOutsideEvent;
    // 打印一條消息,提示指令已與元素解綁
    console.log('指令已與元素解綁');
  }
});

// 創(chuàng)建一個(gè) Vue 實(shí)例
new Vue({
  el: '#app',
  methods: {
    // 定義一個(gè)方法,用于處理點(diǎn)擊元素外部的事件
    handleClickOutside: function () {
      console.log('點(diǎn)擊了元素外部');
    }
  },
  template: '<div v-click-outside="handleClickOutside">點(diǎn)擊這個(gè) div 外部試試</div>'
});

這些鉤子函數(shù)能讓你在不同的階段對(duì)指令綁定的元素進(jìn)行操作,大大增強(qiáng)了 Vue 指令的靈活性。你可以根據(jù)具體的需求選擇合適的鉤子函數(shù)來使用。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • VsCode工具開發(fā)vue項(xiàng)目必裝插件清單(推薦!)

    VsCode工具開發(fā)vue項(xiàng)目必裝插件清單(推薦!)

    對(duì)于很多使用vscode編寫vue項(xiàng)目的新手同學(xué)來說,可能不知道使用什么插件,下面這篇文章主要給大家介紹了關(guān)于VsCode工具開發(fā)vue項(xiàng)目必裝插件的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • vue3中setup語法糖下父子組件間傳遞數(shù)據(jù)的方式

    vue3中setup語法糖下父子組件間傳遞數(shù)據(jù)的方式

    Vue3中父組件指的是包含一個(gè)或多個(gè)子組件的組件,它們通過props和事件等方式來傳遞數(shù)據(jù)和通信,這篇文章主要介紹了vue3中setup語法糖下父子組件間傳遞數(shù)據(jù)的方式,需要的朋友可以參考下
    2023-06-06
  • vue element-ui讀取pdf文件的方法

    vue element-ui讀取pdf文件的方法

    這篇文章主要介紹了vue element-ui讀取pdf文件的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Vue組件上使用v-model之單選框

    Vue組件上使用v-model之單選框

    這篇文章主要介紹了Vue組件上使用v-model之單選框,代碼分為子組件內(nèi)容和父組件內(nèi)容,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • vue-cli3項(xiàng)目生產(chǎn)和測(cè)試環(huán)境分包后文件名和數(shù)量不一致解決

    vue-cli3項(xiàng)目生產(chǎn)和測(cè)試環(huán)境分包后文件名和數(shù)量不一致解決

    這篇文章主要為大家介紹了vue-cli3項(xiàng)目生產(chǎn)和測(cè)試環(huán)境分包后文件名和數(shù)量不一致解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • vue3 elementPlus 表格實(shí)現(xiàn)行列拖拽及列檢索功能(完整代碼)

    vue3 elementPlus 表格實(shí)現(xiàn)行列拖拽及列檢索功能(完整代碼)

    本文通過實(shí)例代碼給大家介紹vue3 elementPlus 表格實(shí)現(xiàn)行列拖拽及列檢索功能,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2023-10-10
  • ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)

    ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)

    這篇文章主要為大家介紹了ElementUI?$notify通知方法中渲染自定義組件實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • vue學(xué)習(xí)筆記之過濾器的基本使用方法實(shí)例分析

    vue學(xué)習(xí)筆記之過濾器的基本使用方法實(shí)例分析

    這篇文章主要介紹了vue學(xué)習(xí)筆記之過濾器的基本使用方法,結(jié)合實(shí)例形式分析了vue.js過濾器的基本功能、用法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-02-02
  • 用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作過程

    用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作過程

    這篇文章主要介紹了用electron 打包發(fā)布集成vue2.0項(xiàng)目的操作步驟,把electron 加入到自己項(xiàng)目中各種不兼容,升級(jí)版本踩坑無數(shù)個(gè),今天通過本文給大家分享下詳細(xì)過程,需要的朋友可以參考下
    2022-10-10
  • electron-vue?項(xiàng)目添加啟動(dòng)loading動(dòng)畫的實(shí)現(xiàn)思路

    electron-vue?項(xiàng)目添加啟動(dòng)loading動(dòng)畫的實(shí)現(xiàn)思路

    electron-vue腳手架搭建的項(xiàng)目,在開發(fā)階段可能你注意不到項(xiàng)目啟動(dòng)慢的問題,但是在build?生成的exe可執(zhí)行文件,啟動(dòng)后,要反應(yīng)很久才能進(jìn)入到app.vue?中加載的頁面,體驗(yàn)性很差,本文給大家介紹electron?vue啟動(dòng)動(dòng)畫效果的實(shí)例代碼,感興趣的朋友一起看看吧
    2022-01-01

最新評(píng)論

舟曲县| 莱西市| 叶城县| 六枝特区| 云南省| 金乡县| 民丰县| 新蔡县| 洪江市| 泾川县| 吉木萨尔县| 嵊泗县| 洛宁县| 漳州市| 广宗县| 桐梓县| 永平县| 惠水县| 平乡县| 登封市| 黄山市| 罗定市| 秦皇岛市| 桑日县| 乌拉特后旗| 万山特区| 化州市| 黄梅县| 通化县| 巴中市| 永福县| 随州市| 天台县| 通辽市| 屏边| 花莲县| 龙海市| 贵阳市| 三穗县| 广丰县| 大冶市|