麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Vue3 中自定義指令(一)

Vue3 中自定義指令(一)

來源:千鋒教育
發布人:qyf
時間: 2022-08-01 16:47:08 1659343628

Vue3 中自定義指令

  TienChin 項目前端是 Vue3,前端有這樣的一個需求:有一些前端頁面上的按鈕要根據用戶的權限來決定是否展示出來,如果用戶具備相應的權限,那么就展示對應的按鈕;如果用戶不具備對應的權限,那么按鈕就隱藏起來。大致上就這樣一個需求。

  看到這個需求,可能有小伙伴首先想到用 v-if 指令,這個指令確實也能做,但是,由于用戶具備的權限一般來說可能是多個,甚至可能還有通配符,所以這個比對并不是一個容易的事情,肯定得寫方法。所以,如果能用一個指令來實現這個功能,那么就會顯得專業很多了。

  說干就干,我們來看看 Vue3 中如何自定義指令。

  1. 成果展示

  我們先來看看實現自定義指令最終的使用方式:

      <button @click="btnClick" v-hasPermission="['user:delete']">刪除用戶</button>

  小伙伴們看到,這個 v-hasPermission 就是我們的自定義指令,如果當前用戶具備 user:delete 權限,這個按鈕就會展示出來,如果當前用戶不具備這個權限,這個按鈕就不會展示出來。

  2. 指令基礎

  先要和小伙伴們說一下,Vue2 和 Vue3 在自定義指令上有一些差異,并不完全一致,下面的介紹主要是針對 Vue3 的介紹。

  我先來和小伙伴們分享一下我們具體是怎么做的,然后在講解代碼的時候再來和大家說說各個參數的含義。

  2.1 兩種作用域

  自定義指令可以定義全局的,也可以定義局部的。

  在正式開搞之前,小伙伴們需要先明白,自定義指令有兩種作用域,一種是局部的自定義指令,還有一種是全局的自定義指令。局部的自定義指令就只能在當前 .vue 文件中使用,全局的則可以在所有的 .vue 文件中使用。

  2.1.1 局部指令

  直接在當前 .vue 文件中定義即可,如下:

  directives: {

  focus: {

  // 指令的定義

  mounted(el) {

  el.focus()

  }

  }

  }

  不過,在 Vue3 中,也可以這樣寫:

0

  這里我自定義了一個名叫 onceClick 的指令,給一個 button 按鈕加上這個指令之后,可以設置這個 button 按鈕在點擊多久之后,處于禁用狀態,防止用戶重復點擊。

  小伙伴們看,這個指令的執行邏輯其實很簡單,el 相當于添加了這個指令的元素,監聽該元素的點擊事件,如果點擊該元素時,該元素不是處于禁用狀態,那么就設置該元素為禁用,給一個定時任務,到期后使該元素變為可用。這里邊具體的參數,下面會跟大家詳細介紹。

  不過這只是一個局部指令,只能在當前 .vue 文件中使用,我們也可以定義全局指令,這樣就可以在所有的 .vue 文件中使用了。

  2.1.2 全局指令

  全局指令我們一般寫在 main.js 中,或者寫一個單獨的 js 文件然后在 main.js 中引入,下面的例子是直接寫在 main.js 中:

  const app = createApp(App);

  app.directive('onceClick',{

  mounted(el, binding, vnode) {

  el.addEventListener('click', () => {

  if (!el.disabled) {

  el.disabled = true;

  setTimeout(() => {

  el.disabled = false;

  }, binding.value || 1000);

  }

  });

  }

  })

  這樣,我們就可以隨時隨地去使用 v-onceClick 這個指令了。

  可能小伙伴感覺比較疑惑,自定義指令時候的 mounted 以及這里的參數都是咋回事,那么接下來松哥就來和大家詳細介紹一下這些方法和參數。

  更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 中国美团外卖男男china| 色偷偷亚洲男人天堂| 高清免费毛片| 奇米视频7777| 欧美特黄视频在线观看| 岳一夜被你要了六次| 国产日韩欧美| 毛片无码国产| 直接观看黄网站免费视频| 久久天天躁狠狠躁夜夜| 成人久久精品一区二区三区| 韩国三级香港三级日本三级| 亚洲一卡二卡三卡四卡无卡麻豆 | 永久免费无内鬼放心开车| 男人的天堂黄色| 中文字幕www| a级毛片免费全部播放| 伊甸园在线观看国产| 最好看的2018中文字幕国语免费| 国产v在线播放| 两个小姨子韩国电影| 国产成人一区二区在线不卡| 旧里番6080在线观看| 怡红院视频在线观看| 美女脱个精光让男人桶爽| 高清中文字幕免费观在线| 99久久精品国产免费| 国内午夜免费鲁丝片| 国精品在亚洲_欧美| 欧美xxxx做受性欧美88| 精品久久久久久中文字幕| 久久国产精品99精品国产| 四虎永久网址在线观看| 草莓视频网站入口| 天天综合网天天综合色| 老八吃屎奥利给原视频带声音的| 韩日毛片| 亚洲精品欧美精品日韩精品| 穿透明白衬衫喷奶水在线播放| 情侣视频精品免费的国产| 国产成人精品综合在线观看|