精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3 學習筆記 —Vue3 自定義指令

開發 前端
自定義指令分為全局和局部兩種類型,大家并不陌生。今天我們就講講在 vue3 中,自定義指令定義、使用以及鉤子函數都有哪些變化?

[[437508]]

自定義指令分為全局和局部兩種類型,大家并不陌生。今天我們就講講在 vue3 中,自定義指令定義、使用以及鉤子函數都有哪些變化?

一、注冊自定義指令

以下實例都是實現一個輸入框自動獲取焦點的自定義指令。

1.1、全局自定義指令

在vue2中,全局自定義指令通過 directive 掛載到 Vue 對象上,使用 Vue.directive('name',opt)。

實例1:Vue2 全局自定義指令

  1. Vue.directive('focus',{ 
  2.  inserted:(el)=>{ 
  3.   el.focus() 
  4.  } 
  5. }) 

 inserted 是鉤子函數,在綁定元素插入父節點時執行。

在 vue3 中,vue 實例通過createApp 創建,所以全局自定義指令的掛載方式也改變了, directive 被掛載到 app上。

實例2:Vue3 全局自定義指令

  1. //全局自定義指令 
  2. app.directive('focus',{ 
  3.  mounted(el){ 
  4.   el.focus() 
  5.  } 
  6. }) 
  7.  
  8. //組件使用 
  9. <input type="text" v-focus /> 

1.2、局部自定義指令

在組件內部,使用 directives 引入的叫做局部自定義指令。Vue2 和 Vue3 的自定義指令引入是一模一樣的。

實例3:局部自定義指令

  1. <script> 
  2. //局部自定義指令 
  3. const defineDir = { 
  4.  focus:{ 
  5.   mounted(el){ 
  6.    el.focus() 
  7.   } 
  8.  } 
  9. export default { 
  10.  directives:defineDir, 
  11.  setup(){} 
  12. </script> 

二、自定義指令中的生命周期鉤子函數

一個指令定義對象可以提供如下幾個鉤子函數(都是可選的,根據需要引入)

  • created :綁定元素屬性或事件監聽器被應用之前調用。該指令需要附加需要在普通的 v-on 事件監聽器前調用的事件監聽器時,這很有用。
  • beforeMounted :當指令第一次綁定到元素并且在掛載父組件之前執行。
  • mounted :綁定元素的父組件被掛載之后調用。
  • beforeUpdate :在更新包含組件的 VNode 之前調用。
  • updated :在包含組件的 VNode 及其子組件的 VNode 更新后調用。
  • beforeUnmounted :在卸載綁定元素的父組件之前調用
  • unmounted :當指令與元素解除綁定且父組件已卸載時,只調用一次。

實例3:測試指令內生命周期函數執行

  1. <template> 
  2.  <div> 
  3.   <input type="text" v-focus  v-if="show"><br> 
  4.   <button @click="changStatus">{{show?'隱藏':'顯示'}}</button> 
  5.  </div> 
  6. </template> 
  7.  
  8. //局部自定義指令 
  9. const autoFocus = { 
  10.  focus:{ 
  11.   created(){ 
  12.    console.log('created'); 
  13.   }, 
  14.   beforeMount(){ 
  15.    console.log('beforeMount'); 
  16.   }, 
  17.   mounted(el){ 
  18.    console.log('mounted'); 
  19.   }, 
  20.   beforeUpdated(){ 
  21.    console.log('beforeUpdated'
  22.   }, 
  23.   updated(){ 
  24.    console.log('updated'); 
  25.   }, 
  26.   beforeUnmount(){ 
  27.    console.log('beforeUnmount'); 
  28.   }, 
  29.   unmounted(){ 
  30.    console.log('unmounted'); 
  31.   } 
  32.  }, 
  33. import { ref } from 'vue' 
  34. export default { 
  35.  directives:autoFocus, 
  36.  setup(){ 
  37.   const show = ref(true
  38.   return { 
  39.    show, 
  40.    changStatus(){ 
  41.     show.value = !show.value 
  42.    } 
  43.   } 
  44.  } 

 通過點擊按鈕,我們發現創建 input 元素的時候,會觸發 created、beforeMount 和 mounted 三個鉤子函數。

隱藏 input 元素的時候,會觸發 beforeUnmount 和 unmounted 。

然而我們添加的 beforeUpdate 和 updated 函數并沒有執行。

此時我們把 input 元素上的 v-if 修改成 v-show 就會執行上述兩個方法了,具體的執行情況自行驗證下。

從 vue2 升級到 vue3 ,自定義指令的生命周期鉤子函數發生了改變,具體變化如下:

  • bind 函數被替換成了beforeMounted。
  • update 被移除。
  • componentUpdated 被替換成了updated。
  • unbind 被替換成了 unmounted。
  • inserted 被移除。

三、自定義指令鉤子函數的參數

鉤子函數被賦予了以下參數:

  • el:指令所綁定的元素,可以直接操作DOM。
  • binding:是一個對象,包含該指令的所有信息。

binding 包含的屬性具體的分別為:

  • arg 自定義指令的參數名。
  • value 自定義指令綁定的值。
  • oldValue 指令綁定的前一個值。
  • dir 被執行的鉤子函數
  • modifiers:一個包含修飾符的對象。
  1. <template> 
  2.  <div> 
  3.   <div v-fixed >定位</div> 
  4.  </div> 
  5. </template> 
  6.  
  7. <script> 
  8. //自定義指令動態參數 
  9. const autoFocus = { 
  10.  fixed:{ 
  11.   beforeMount(el,binding){ 
  12.    console.log('el',el) 
  13.    console.log('binding',binding) 
  14.   } 
  15.  } 
  16. export default { 
  17.  directives:autoFocus, 
  18.  setup(){ 
  19.  } 
  20. </script> 

四、自定義指令參數

自定義指令的也可以帶參數,參數可以是動態的,參數可以根據組件實例數據進行實時更新。

實例4:自定義指令動態參數

  1. <template> 
  2.  <div> 
  3.   <div v-fixed:pos="posData" style="width:100px;height:100px;background:grey">定位</div> 
  4.  </div> 
  5. </template> 
  6.  
  7. <script> 
  8. //自定義指令動態參數 
  9. const autoFocus = { 
  10.  fixed:{ 
  11.   beforeMount(el,binding){ 
  12.    el.style.position = "fixed" 
  13.    el.style.left = binding.value.left+'px' 
  14.    el.style.top = binding.value.top + 'px' 
  15.   } 
  16.  } 
  17. export default { 
  18.  directives:autoFocus, 
  19.  setup(){ 
  20.   const posData = { 
  21.    left:20, 
  22.    top:200 
  23.   } 
  24.   return { 
  25.    posData, 
  26.   } 
  27.  } 
  28. </script>

什么時候需要自定義指令?

  • 需要對普通 DOM 元素進行底層操作,這時候就會用到自定義指令。
  • 需要將某些功能在指定DOM元素上使用,但對于需要操作大量DOM元素或者大變動時候,推薦使用組件,而不是指令。

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-12-01 08:11:44

Vue3 插件Vue應用

2023-11-28 09:03:59

Vue.jsJavaScript

2022-07-26 01:06:18

Vue3自定義指令

2025-11-19 08:23:42

2023-06-28 08:05:46

場景vue3自定義

2021-11-16 08:50:29

Vue3 插件Vue應用

2021-12-02 05:50:35

Vue3 插件Vue應用

2024-09-26 14:16:07

2021-12-29 07:51:21

Vue3 插件Vue應用

2021-12-08 09:09:33

Vue 3 Computed Vue2

2022-08-01 11:41:00

Vue插件

2020-09-19 21:15:26

Composition

2023-12-11 07:34:37

Computed計算屬性Vue3

2023-12-06 07:43:56

Vue如何定義事件

2021-11-26 05:59:31

Vue3 插件Vue應用

2021-11-17 08:24:47

Vue3 插件Vue應用

2023-12-14 08:25:14

WatchVue.js監聽數據

2025-10-17 07:10:00

前端開發Vue

2023-12-01 09:02:57

Vue3WangEditor

2021-05-26 10:40:28

Vue3TypeScript前端
點贊
收藏

51CTO技術棧公眾號

6080日韩午夜伦伦午夜伦| 中文在线一区二区 | 国产伦精品一区二区三区高清| 国产亚洲精品久久777777| 欧美三级午夜理伦三级在线观看 | 91香蕉视频污| 国产精品久久一区| 美女视频黄免费| 免费精品国产| 日韩亚洲欧美中文三级| 成人在线观看你懂的| www 日韩| 成人av中文字幕| 国产日韩精品视频| 免费观看一区二区三区毛片| 久久一区二区中文字幕| 欧美精品一区二区三区高清aⅴ| 精品国产免费av| 国产色在线观看| 久久综合色8888| 亚洲最大成人免费视频| 欧美超碰在线观看| 伊人影院久久| 麻豆一区二区在线观看| 精品人妻中文无码av在线| 国产乱人伦丫前精品视频| 欧美三级日韩三级| 亚洲熟妇国产熟妇肥婆| 欧美6一10sex性hd| 亚洲日本乱码在线观看| 日韩欧美视频一区二区| 午夜18视频在线观看| 国产精品资源站在线| 国产精品视频色| 啦啦啦免费高清视频在线观看| 欧美欧美全黄| 久久久精品一区| 日本一二三不卡视频| 开心激情综合| 欧美成人在线直播| 欧美国产日韩在线视频| 岛国精品在线| 在线免费不卡视频| 国产精品欧美激情在线观看| a级片在线免费| 亚洲综合成人在线视频| 做爰高潮hd色即是空| aaa在线观看| 国产女主播视频一区二区| 久久久福利视频| 天天综合在线视频| 99国产一区二区三精品乱码| 国产精品果冻传媒潘| 成人小说亚洲一区二区三区| 国产一区二区精品久久| 亚洲xxx自由成熟| jlzzjlzzjlzz亚洲人| 国产一区二区电影| 成人9ⅰ免费影视网站| 亚洲精品一区二区三区四区| 国产成人av一区二区三区在线| 91蜜桃网站免费观看| 不卡视频在线播放| 成人av午夜影院| 精品人伦一区二区三区| 美丽的姑娘在线观看免费动漫| www激情久久| 奇米888一区二区三区| 国产日本在线视频| 国产精品国产三级国产a| 亚洲自拍偷拍一区二区三区| 成人黄色片在线| 久久久久久久无码| 蜜桃a∨噜噜一区二区三区| 亚洲视频在线看| 色欲狠狠躁天天躁无码中文字幕 | 欧美极品一区二区| 国内av一区二区三区| 日本一区二区三区四区在线视频| 亚洲成人av动漫| 免费在线观看黄色| 亚洲一区二区在线播放相泽| a级黄色一级片| 欧美片第一页| 欧美精品成人一区二区三区四区| 久久精品国产99久久99久久久| 伊色综合久久之综合久久| 亚洲黄色有码视频| 国产精品国产三级国产专业不| 欧美成人精品一区二区三区在线看| 久久久精品免费视频| 亚洲国产精一区二区三区性色| 校园激情久久| 91精品久久久久| 少妇高潮一区二区三区99小说| 久久午夜国产精品| 欧美日韩在线免费观看视频| 丁香花电影在线观看完整版| 91久久一区二区| 国产又粗又猛又爽又黄| 美女亚洲一区| 久久国产精品久久国产精品| 99久热在线精品996热是什么| 蜜桃av噜噜一区二区三区小说| 2019国产精品视频| 狠狠v欧美ⅴ日韩v亚洲v大胸| 亚洲欧美偷拍卡通变态| 欧美日韩一区二区在线免费观看| 四虎精品永久免费| 亚洲精品国产精品国自产在线| 国产激情av在线| 99精品视频免费| 成人天堂噜噜噜| 日本在线一二三| 伊人性伊人情综合网| 性欧美videossex精品| 高清欧美性猛交xxxx黑人猛| 久久精品福利视频| chinese国产精品| 成人午夜视频福利| 中文字幕一区二区三区四区五区人 | 神马午夜伦理影院| 国产精品高清乱码在线观看| 欧美va亚洲va香蕉在线| 国产18无套直看片| 久久九九国产| 国产一区高清视频| 羞羞的视频在线看| 91精品在线一区二区| 免费看黄色的视频| 一级成人国产| 国产一区视频观看| 欧美videosex性极品hd| 欧美丰满嫩嫩电影| 天天操天天舔天天射| 亚洲欧美卡通另类91av| 国外成人在线视频网站| 韩国日本一区| 日韩一卡二卡三卡国产欧美| 国产人与禽zoz0性伦| 青草国产精品久久久久久| 欧美精品成人一区二区在线观看| 女厕盗摄一区二区三区| 亚洲成人教育av| 国产在线观看免费视频今夜| 国产高清不卡二三区| 亚洲高潮无码久久| 精品一区二区三区免费看| 久久手机精品视频| 国产xxxx孕妇| 一区二区在线看| 亚洲精品一区二区18漫画| 欧美在线观看天堂一区二区三区| 国产精品视频一区二区三区四| 国产高清视频在线| 欧美日韩在线一区二区| 欧美色图17p| 久久国产成人午夜av影院| 在线观看日本一区| 伊人国产精品| 欧美巨乳美女视频| 亚洲国产成人精品无码区99| 精品人妻少妇嫩草av无码专区 | 日韩av网站在线播放| 久久国产剧场电影| 丰满女人性猛交| av综合网址| 55夜色66夜色国产精品视频| 欧美日韩国产亚洲沙发| 欧美亚洲国产bt| 婷婷社区五月天| 懂色av中文一区二区三区| 成人av在线不卡| 欧美a大片欧美片| 日本精品久久中文字幕佐佐木| 国产区视频在线播放| 欧美精选午夜久久久乱码6080| 538任你躁在线精品视频网站| 国产91精品一区二区| 红桃av在线播放| 日韩大片在线| 99久久国产免费免费| 瑟瑟视频在线看| 播播国产欧美激情| 亚洲成人黄色片| 色天使久久综合网天天| 精品国产大片大片大片| 暴力调教一区二区三区| 一本久道中文无码字幕av| 亚洲一区二区三区| 久久久久久久久一区| 日韩成人在线电影| 性视频1819p久久| av中文天堂在线| 亚洲电影天堂av| 一卡二卡在线观看| 欧美日韩国产精品一区| 日韩精品一区二区亚洲av性色| 99re免费视频精品全部| 欧美日韩精品区别| 亚洲一区不卡| 日韩精品第1页| 久久不见久久见国语| 99精彩视频在线观看免费| 日本精品在线一区| 午夜精品99久久免费| 日本电影全部在线观看网站视频| 日韩一区二区电影在线| 久久久久亚洲视频| 黑人巨大精品欧美一区免费视频| 欧美色视频一区二区三区在线观看| av男人天堂一区| 亚洲精品综合在线观看| 久久久久久婷| 成人免费性视频| 日韩在线观看| 看欧美日韩国产| 97视频一区| 91视频国产一区| 在线国产成人影院| 国内久久久精品| fc2ppv国产精品久久| 一区二区三区四区在线观看视频| 欧美一级在线免费观看| 欧美一区二区三区人| 亚洲在线精品视频| 91激情五月电影| 亚洲AV无码成人精品区东京热| 亚洲综合免费观看高清完整版在线| 日韩福利在线视频| 国产日产欧产精品推荐色| 国产精品福利导航| 懂色av噜噜一区二区三区av| 佐山爱在线视频| 激情综合色综合久久| 亚洲77777| 日本免费新一区视频| 日韩中文字幕二区| 中文一区二区| 亚洲熟女乱色一区二区三区| 亚洲经典视频在线观看| 免费人成在线观看视频播放| 综合在线一区| 蜜臀av.com| 1024精品久久久久久久久| 伊人久久av导航| 四虎成人av| 一区二区三区四区欧美| 成人在线视频免费观看| 日韩欧美精品一区二区| 日韩精品免费一区二区三区| 亚洲精品一区二区毛豆| 99精品电影| 午夜久久久久久久久久久| 中文精品久久| 国产精品videossex国产高清 | 久久高清视频免费| av网站网址在线观看| 欧美精品久久久久久久久| 超碰在线最新网址| 欧美亚洲成人网| 偷拍视频一区二区三区| 国产精品久久一区| 精品国产麻豆| 国产精品国产精品国产专区蜜臀ah| 国产精品17p| 欧美人与性禽动交精品| 日韩精品久久| 免费看日b视频| 日韩亚洲在线| 中文字幕永久视频| 国内成人免费视频| 国产一线在线观看| 久久久久久久久一| 日韩激情小视频| 成人美女视频| 亚洲美女动态图120秒| 国产色a在线| 久久伊人免费视频| 97超碰免费在线| 国产a∨精品一区二区三区不卡| 懂色aⅴ精品一区二区三区| 2022国产精品| 欧美极品在线观看| 强伦女教师2:伦理在线观看| 黄色亚洲在线| wwwwww.色| 国产69精品久久久久毛片| 国产男男chinese网站| 中文字幕亚洲视频| 日本a在线观看| 欧美日韩在线播放一区| 亚洲精品久久久狠狠狠爱| 亚洲欧美日韩图片| 高h视频在线观看| 欧美一级大片在线免费观看| 日本a人精品| 精品乱色一区二区中文字幕| 色88久久久久高潮综合影院| 成人在线视频一区二区三区| 老司机午夜精品视频在线观看| 亚洲妇熟xx妇色黄蜜桃| 91免费在线看| 青青青在线免费观看| 色国产精品一区在线观看| 午夜精品久久久久久久第一页按摩| 日韩精品在线私人| 在线观看小视频| 国产精品久久久久久搜索| 国产精品一区二区中文字幕| 一区二区三区欧美成人| 亚洲免费在线| 日本美女视频网站| 国产精品进线69影院| 黄色在线视频网址| 精品日韩欧美在线| 欧美人xxx| 国产精品盗摄久久久| 久久久久97| 天堂av在线中文| 免费的成人av| xxx在线播放| 天天操天天综合网| 黄色成人一级片| 久久综合伊人77777尤物| 日韩欧美2区| 任我爽在线视频精品一| 在线视频日韩| 污污污www精品国产网站| 亚洲激情自拍偷拍| 99国产精品一区二区三区 | 免费黄色在线观看| 国产精品6699| 国产精品一区2区3区| 黄色国产一级视频| 成人动漫精品一区二区| 欧美日韩精品在线观看视频| 欧美福利电影网| 欧美日韩xx| 国产一区欧美二区三区| 日韩久久久久| 91精品999| 中文字幕一区二区三区色视频| 五月激情丁香网| 这里只有精品视频在线| 成人免费av电影| 欧美日韩综合网| 久久婷婷影院| x88av在线| 欧美撒尿777hd撒尿| 3d成人动漫在线| 国产日韩在线看片| 婷婷亚洲最大| 一二三级黄色片| 亚洲乱码中文字幕| 午夜精品无码一区二区三区| 久久久人成影片一区二区三区观看| 97se亚洲| 国产免费观看高清视频| www.性欧美| 老熟妇一区二区三区| 国产亚洲激情在线| 久久亚洲资源中文字| 中文字幕一区二区三区在线乱码| 精品一区二区三区免费| 四虎精品免费视频| 精品国产露脸精彩对白| 性欧美又大又长又硬| 欧美一区二视频在线免费观看| 日韩电影在线观看电影| 久久久免费看片| 欧美一区二区久久| 黄色aa久久| 日韩精品欧美一区二区三区| 精品在线免费视频| 日本免费一二三区| 亚洲香蕉成视频在线观看| 青娱乐极品盛宴一区二区| 国产精品久久久久久久乖乖| 2024国产精品视频| 在线免费观看视频网站| 久久久久久亚洲精品不卡| 曰本一区二区三区视频| 国产高清av片| 精品久久久久久中文字幕一区奶水 | 紧缚捆绑精品一区二区| 国产精彩视频在线| 在线看福利67194| 天堂av一区| 免费观看成人在线视频| 樱花影视一区二区| 国产免费a∨片在线观看不卡| 亚洲一区二区中文| 午夜在线观看免费一区| 夫妻性生活毛片| 亚洲男人天天操| 亚洲免费一区三区| 国产成人黄色网址| 亚洲成国产人片在线观看| 又爽又大又黄a级毛片在线视频|