1. 简写
自定义指令的简写形式是一个函数,代表的是生命周期 mounted 和 updated

const vShowBtn: Directive = (el, binding) => {
console.log(el, binding)
}
2. 鉴权
后端会返回一个权限数组,前端可以根据权限数组决定是否显示某些按钮
<template>
<div class="btns">
<button v-show-btn="'shop:create'">创建</button>
<button v-show-btn="'shop:edit'">编辑</button>
<button v-show-btn="'shop:delete'">删除</button>
</div>
</template>
<script setup lang="ts">
import { Directive } from 'vue';
localStorage.setItem('userId', 'lzy')
const permisson = [
'lzy:shop:create',
'lzy:shop:edit',
'lzy:shop:delete',
]
const vShowBtn: Directive<HTMLElement, string> = (el, binding) => {
const userId = localStorage.getItem('userId')
if(!permisson.includes(userId + ':' + binding.value)){
el.style.display = 'none'
}
}
</script>
<style scoped>
.btns button {
margin: 20px;
}
</style>