Vue3+TypeScript学习笔记(二十四)

简介: 本节记录自定义指令简写&鉴权相关的内容

一般来讲,自定义指令当中不需要用到那么多生命周期钩子函数,很多时候我们只关注mounted和updated。这时就可以将自定义指令简写为以下这种形式:

const vHasShow:Directive = (el:HTMLElement,binding:DirectiveBinding) => {}

自定义指令鉴权:

App.vue

<template>
    <button v-has-show="'create'">创建</button>
    <button v-has-show="'edit'">编辑</button>
    <button v-has-show="'delete'">销毁</button>
</template>

<script setup lang="ts">
import { ref, reactive } from 'vue'
import type { Directive, DirectiveBinding } from 'vue'

// Mock数据
let premission = [
    'xiaomanzs:shop:edit',
    'xiaomanzs:shop:create',
    // 'xiaomanzs:shop:delete',
]

// 获取userId,只有当id+:shop:+操作名称完整对应上permission中的元素时才认定为有权限,此时按钮会被展示出来
sessionStorage.setItem('userId', 'xiaomanzs')

const userId = sessionStorage.getItem('userId')
const vHasShow: Directive<HTMLElement, DirectiveBinding> = (el, binding) => {
    if (!premission.includes(userId + ':shop:' + binding.value)) {
        el.style.display = 'none'
    }
}
</script>

<style scoped>
button {
    margin: 20px;
}
</style>

其核心思想是用户id+:shop:+模板中为指令设置的实参组成的字符串必须是premission数组中的元素才会展示按钮,否则按钮的display将被设置为none(隐藏)

相关文章
|
14天前
|
JavaScript 前端开发
TypeScript 学习笔记(六):TypeScript 与前端框架的结合应用
笔记,进一步提升 TypeScript 编程技能。
20 1
|
22天前
|
JavaScript 前端开发 编译器
TypeScript 学习笔记
TypeScript 学习笔记
|
22天前
|
JavaScript 前端开发 数据可视化
前端开发使用 Vue 3 + TypeScript + Pinia + Element Plus + ECharts
前端开发使用 Vue 3 + TypeScript + Pinia + Element Plus + ECharts
55 0
|
22天前
|
JavaScript 前端开发
在Vue中使用TypeScript的常见问题有哪些?
在Vue中使用TypeScript的常见问题有哪些?
40 2
|
22天前
|
JavaScript 前端开发
在Vue中使用TypeScript的优缺点是什么?
在Vue中使用TypeScript的优缺点是什么?
25 0
|
22天前
|
JavaScript
在 Vue 中如何使用 TypeScript?
在 Vue 中如何使用 TypeScript?
17 0
|
22天前
|
JavaScript 安全 容器
Vue3 + setup + TypeScript: 构建现代、类型安全的Vue应用的关键技巧总结
当使用 setup 的时候,组件直接引入就可以了,不需要再自己手动注册
|
22天前
|
JavaScript Go 数据库
用Typescript 的方式封装Vue3的表单绑定,支持防抖等功能。
Vue3 的父子组件传值、绑定表单数据、UI库的二次封装、防抖等,想来大家都很熟悉了,本篇介绍一种使用 Typescript 的方式进行统一的封装的方法。
|
22天前
|
前端开发 JavaScript 测试技术
Vue3+Vite+TypeScript常用项目模块详解(下)
现在无论gitee还是github,越来越多的前端开源项目采用Vue3+Vite+TypeScript+Pinia+Elementplus+axios+Sass(css预编译语言等),其中还有各种项目配置比如eslint 校验代码工具配置等等,而我们想要进行前端项目的二次开发,就必须了解会使用这些东西,所以作者写了这篇文章进行简单的介绍。
|
JavaScript 前端开发
基于Vue2+TypeScript的项目规划搭建
最近手头的项目都已经接近尾声,时间比较宽裕,于是想着升级一下网站。上一版的网站还是我刚接触前端时设计的,使用Zepto为主要框架,代码毫无模块化思想,因为后续的功能越加越多,现在每次维护都有自杀的冲动。
1594 0