Vue-自定义指令
自定义指令的封装
import Vue from "vue";
//1.按钮权限的一个指令
Vue.directive("permission",{
inserted(el,binding){
//1.一般从状态机中获取 (模拟查询出来的用户权限列表)
let btnPermissionList=[{permission:"/user/query"},{permission:"/user/delete"}, {permission:"/user/update"}];
let btnPermission=binding.value;//返回的是一个数组
//2.btnPermission 至少有一个在 btnPermissionList中存在
let hasRole=btnPermissionList.some(item=>{
return btnPermission.includes(item.permission);
});
//不在按钮权限列表的按钮 删除
if(!hasRole){
el.remove();
}
}
});
全局挂载自定义指令 main.js中
import "./directivers";
组件中使用自定义指令
<el-button v-permission="['/user/add','/admin/add']">新增用户</el-button>
<el-button v-permission="['/user/query']" >查询用户</el-button>
<el-button v-permission="['/user/update']" >修改用户</el-button>
<el-button v-permission="['/user/delete']">删除用户</el-button>
<el-button v-permission="['/user/deleteMany']">批量删除用户</el-button>
React-组件封装
import React, {Fragment} from "react";
import {useSelector} from "react-redux";
function BtnPerm(props:any) {
//从状态及中读取用户权限
const userState=useSelector((state:any)=>state.user);
return (
<Fragment>
{userState.permissionList.includes(props.value)?props.children:undefined}
</Fragment>
);
}
export default BtnPerm;