精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲国产精品激情在线观看| 亚洲国产老妈| 色综合久久中文综合久久牛| 欧美精品亚洲精品| 国产又爽又黄又嫩又猛又粗| 999久久久亚洲| 欧美xxx久久| heyzo国产| a黄色在线观看| 国产精品一级片在线观看| 国内精品久久久久影院优 | 666av成人影院在线观看| 国产精品三级在线观看| 国产精品制服诱惑| 伊人网站在线观看| aa国产精品| 久久精品国产亚洲一区二区| 一本色道综合久久欧美日韩精品| 亚洲一区二区三区久久久| 五月天欧美精品| 夜夜爽99久久国产综合精品女不卡| 欧美 日韩 综合| 久久电影网电视剧免费观看| 91国在线精品国内播放| 国产精品嫩草影院俄罗斯| 日韩女同一区二区三区| av在线电影网| 不卡一区在线观看| 91美女福利视频高清| 成人免费毛片男人用品| 黄色在线成人| 久久这里有精品| 手机看片国产日韩| 精品国产午夜| 精品一区二区三区四区| 91丨porny丨对白| 日韩欧美一级| 777亚洲妇女| 污片在线免费看| 高清av不卡| 欧美日韩亚洲网| 霍思燕三级露全乳照| 手机av在线播放| 国产精品久久久久永久免费观看| 免费一区二区三区| 色丁香婷婷综合久久| 国产成人一级电影| 91免费在线观看网站| 国产视频www| 国内精品伊人久久久久av一坑| 国产成人a亚洲精品| 男人天堂2024| 久久九九精品| 青青久久aⅴ北条麻妃| 国产免费av一区| 香蕉久久国产| 国产成人亚洲综合91精品| 99久久久无码国产精品免费蜜柚| 国产午夜精品一区二区三区欧美 | av在线不卡免费| 亚洲综合在线观看视频| 久久人人爽人人爽人人av| 在线不卡日本v二区707| 亚洲国产乱码最新视频| 日本免费a视频| 波多野一区二区| 欧美视频中文在线看| 妺妺窝人体色www在线小说| 狼人综合视频| 91国产免费观看| 性欧美在线视频| 欧美欧美在线| 亚洲精品www| 精品人妻一区二区三区四区| 日韩高清欧美| 久色乳综合思思在线视频| 欧美日韩在线国产| 一区二区国产在线观看| 国产成人福利视频| 国产av精国产传媒| 99久久99久久免费精品蜜臀| 日本一区二区三区视频在线观看| 国产对白在线播放| 亚洲图片在线播放| 国产精品一区二区三区四区| 超碰97网站| 深夜福利免费在线观看| 国产精品久线在线观看| 亚洲精品国产suv一区88| 天堂av在线网| 欧美日韩美少妇| 国产性猛交96| 精品无人区麻豆乱码久久久| 久热国产精品视频| 一级免费在线观看| 看电视剧不卡顿的网站| 国产精品对白一区二区三区| 精品av中文字幕在线毛片| 亚洲日本电影在线| 日本三级免费网站| 精品午夜av| 日韩精品小视频| www欧美com| 久久国产精品毛片| 91成人免费视频| 免费一级毛片在线观看| 亚洲美女一区二区三区| av片中文字幕| 亚洲综合网站| 色婷婷av一区二区三区在线观看 | 欧美日韩在线免费观看| caoporm在线视频| 香蕉视频一区| 欧美激情第1页| 91精品国产乱码久久久久| 91丨porny丨最新| 欧美少妇在线观看| av在线日韩| 亚洲精品mp4| 久久亚洲精品大全| 精油按摩中文字幕久久| 日韩福利视频| 91av俱乐部| 毛片网站在线看| 欧美日韩成人综合天天影院| 久久久久久婷婷| 香蕉久久网站| 国产精品久久久久久亚洲影视| 日韩有码第一页| 亚洲男女一区二区三区| 免费看污污网站| 免费观看久久av| 久久久久久久久久久91| 99国产精品99| 国产精品传媒入口麻豆| 亚洲福利精品视频| 国产欧美一区| 欧美最猛性xxxx| 图片区 小说区 区 亚洲五月| 一区二区三区四区在线免费观看| 制服丝袜中文字幕第一页| 国产欧美日韩精品一区二区三区| 97avcom| 手机看片福利永久| 亚洲444eee在线观看| 26uuu国产| 国内在线观看一区二区三区| 99re在线国产| 欧美四级在线| 亚洲第一区中文99精品| 国产亚洲第一页| 成人教育av在线| 国内精品视频一区二区三区| 韩国女主播一区二区三区| 久久免费国产视频| 亚洲av成人精品日韩在线播放| 亚洲福利视频一区二区| 亚洲色图欧美日韩| 激情小视频在线| 91女厕偷拍女厕偷拍高清| 国产精品宾馆在线精品酒店| 人人网欧美视频| 日韩免费观看av| 国产视频网址在线| 欧美日韩国产首页| 丁香花五月激情| 国产69精品久久久久毛片| 久久亚洲精品无码va白人极品| 精品嫩草影院| 国产91精品最新在线播放| www.在线视频.com| 欧美一区二区三区四区在线观看| 麻豆一区二区三区精品视频| 91美女片黄在线观看91美女| 老司机午夜av| 99精品综合| 国产精品国产精品国产专区蜜臀ah| а√在线中文在线新版| 亚洲小视频在线观看| 国产尤物在线观看| 午夜在线成人av| 日本少妇高潮喷水xxxxxxx| 久久99久久99精品免视看婷婷 | 久cao在线| 精品国产三级a在线观看| 日韩视频在线观看一区| 国产精品久久久久久一区二区三区 | 国产精品麻豆免费版| 成人av观看| 久久这里有精品视频| 亚洲日本中文字幕在线| 欧美日韩在线观看一区二区| 青青草原免费观看| 久久久久久久久97黄色工厂| 伊人免费视频二| 亚洲女人av| 99精品视频网站| 日韩精品免费一区二区三区竹菊 | 毛片精品免费在线观看| 欧美一区二区视频在线播放| 香蕉久久aⅴ一区二区三区| 亚洲精品成人免费| 国产精品国产一区二区三区四区| 午夜电影网亚洲视频| 看黄色录像一级片| 91丨九色丨蝌蚪丨老版| 亚洲自拍第三页| 日韩在线播放一区二区| 国产精品三级一区二区| 色综合天天爱| 欧美日韩综合久久| 国产美女撒尿一区二区| 国产一区玩具在线观看| 不卡一二三区| 97在线看福利| 日皮视频在线观看| 久久精视频免费在线久久完整在线看| 亚洲 欧美 自拍偷拍| 欧美一级电影网站| 中文字幕人妻一区二区三区视频| 黑人巨大精品欧美一区二区一视频| 少妇被躁爽到高潮无码文| 国产日韩精品久久久| 菠萝菠萝蜜网站| 成人小视频在线| 久久发布国产伦子伦精品| 日本aⅴ精品一区二区三区 | 日韩精品电影一区亚洲| ww国产内射精品后入国产| 自拍视频亚洲| 中文字幕中文字幕在线中一区高清| 少妇精品久久久一区二区| 国产视色精品亚洲一区二区| 成人h动漫免费观看网站| 51蜜桃传媒精品一区二区| 精品国产伦一区二区三区观看说明| 国产精品视频免费观看www| 欧美一级二级视频| 国产精品成人一区二区| 日韩三级影视| 国产999在线观看| 蜜桃av.com| 欧美精品一线| 天天综合五月天| 天堂美国久久| 伊人久久青草| 偷拍欧美精品| 日本黄xxxxxxxxx100| 永久亚洲成a人片777777| 中文字幕色一区二区| 国产精品成人一区二区不卡| 一区二区免费电影| 韩国福利在线| 久久人人超碰精品| 中文字幕一区二区三区人妻| av在线不卡网| 色婷婷精品久久二区二区密| www.亚洲色图| 中文字幕一二三四区| 久久综合狠狠综合| 69视频在线观看免费| 国产精品青草久久| 青娱乐91视频| 五月天国产精品| 人人草在线观看| 欧美无砖砖区免费| 国产一区二区在线视频聊天| 欧美一区二区成人6969| 亚洲第一第二区| 亚洲精品国产品国语在线| 你懂的视频在线| 中文字幕精品—区二区| 视频在线观看入口黄最新永久免费国产| 欧美激情视频给我| 桃子视频成人app| 91精品美女在线| 国偷自产视频一区二区久| 欧美一区二视频在线免费观看| 色婷婷色综合| 免费无码毛片一区二三区| 视频一区免费在线观看| 九九热精品国产| 99视频精品在线| 林心如三级全黄裸体| 一个色妞综合视频在线观看| 日韩不卡在线播放| 7777精品伊人久久久大香线蕉经典版下载 | 久久人人爽人人爽人人片| 国产网红主播福利一区二区| 老熟妻内射精品一区| 欧美日韩国产影院| ,一级淫片a看免费| 亚洲精品视频在线播放| 黄色一级大片在线免费看产| 欧美性做爰毛片| 亚洲精品66| 快播亚洲色图| 在线精品小视频| 欧美一级黄色影院| 成人一级片网址| 激情高潮到大叫狂喷水| 亚洲成人免费视频| 国产露脸无套对白在线播放| 日韩久久精品电影| 亚洲性图自拍| 国产欧美一区二区三区在线| 欧美绝顶高潮抽搐喷水合集| 一区二区三区四区国产| 日韩a级片在线观看| 亚洲综合丝袜美腿| 又污又黄的网站| 精品呦交小u女在线| 日本三级在线观看网站| 国产日韩欧美日韩大片| 婷婷综合福利| 免费看毛片的网址| 国产综合色精品一区二区三区| 实拍女处破www免费看| 午夜精品久久久久久久99水蜜桃 | 欧美videossexotv100| 一级毛片视频在线观看| 国产精品久久久久久av福利软件 | 国产黑丝在线一区二区三区| 四虎影视1304t| 91久久精品国产91性色tv| 色哟哟在线观看| 韩国福利视频一区| 在这里有精品| 天堂av在线中文| 国产尤物一区二区| 欧美a级片免费看| 欧美日韩高清一区| 91精品国产91久久久久游泳池| 欧美中文字幕在线视频| 欧美一区 二区| 免费看国产一级片| caoporm超碰国产精品| 国产亚洲精品码| 欧美sm极限捆绑bd| 羞羞视频在线观看不卡| 97netav| 国产精品s色| 国产探花一区二区三区| 亚洲日本va在线观看| 国产精品久久久久久免费播放| 色一情一乱一区二区| 日韩成人在线一区| 一区二区三区四区| 国产高清在线精品| 久久久精品国产sm调教| 亚洲成人中文字幕| 俺来也官网欧美久久精品| 极品日韩久久| 久久先锋影音| 国产激情av在线| 欧美精品日日鲁夜夜添| 18videosex性欧美麻豆| 成人在线视频网址| 99精品国产在热久久婷婷| 国产精品三级在线观看无码| 日本高清成人免费播放| 午夜毛片在线| 亚洲综合视频1区| 亚洲黄网站黄| 性少妇bbw张开| 欧美日韩aaa| 亚洲91av| 欧美不卡三区| 久久超碰97中文字幕| 青青草成人免费| 亚洲精品二三区| 九色成人搞黄网站| 欧美少妇在线观看| 91免费国产在线观看| 日批视频免费观看| 欧美成人久久久| 尤物tv在线精品| 97超碰成人在线| 亚洲福利一区二区三区| 成人av电影观看| 91亚洲精华国产精华| 亚洲精选成人| 黄色三级生活片| 亚洲福利视频网| 成人在线不卡| 日韩亚洲欧美视频| 亚洲国产成人私人影院tom| 亚洲av无码国产精品永久一区| …久久精品99久久香蕉国产| 成人aaaa| 亚洲av无码一区二区三区观看| 欧美亚一区二区| 大香伊人久久| 亚洲成人第一| av网站一区二区三区| 国产一区二区在线视频聊天| 欧日韩不卡在线视频| 欧美成人亚洲| 久久久精品成人| 日韩精品免费视频|