vue + vuex + directives實現(xiàn)權(quán)限按鈕的思路

遇到了一個業(yè)務(wù)場景:

某個按鈕按下去之前需要先判斷它是否登陸,如果沒有登陸需要跳轉(zhuǎn)到對應(yīng)的登陸頁面,否則就繼續(xù)該按鈕之后的操作。

對于這種問題,很顯然不能每個按鈕都去判斷,所以我思考了一下結(jié)合自定義指令和vuex完成了相應(yīng)的實現(xiàn)。

主要的代碼實現(xiàn)
const directive = Vue.directive('permission-click', {
  bind: (el, binding, vnode) => {
    el.addEventListener('click', (e) => {
      if (!store.getters.isLogin) {
        store.dispatch('showLogin')
      } else {
        typeof binding.value === 'function' && binding.value()
      }
    })
  }
})

這里封裝了一個自定義指令,添加了一個點擊事件,對于已經(jīng)登陸的則調(diào)用傳進來的函數(shù),否則通過vuex去控制登陸(此處的登陸是通過彈窗實現(xiàn)的)
自定義組件使用的時候也極為簡單

<div class="" v-permission-click="doSomething">
  ...
</div>

vuex里面的showLogin這個action無非就是對login的顯示隱藏flag的操作。
這里只是完成了簡單的登陸權(quán)限控制,從登陸權(quán)限出發(fā),可以加入更多的權(quán)限控制,比如根據(jù)role角色判斷,然后可以全局地控制權(quán)限,且實現(xiàn)起來極為精簡。

Github: https://github.com/lyh2668
Authby: lyh2668

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容