当前位置: 首页 > news >正文

高阶组件实现Button权限

Button权限的具体实现

总体实现:

本项目通过 高阶组件(HOC) withPermissons 实现按钮级别的权限控制,核心思路是:

  1. 定义需要特定权限才能使用的按钮组件
  2. 通过高阶组件检查用户是否拥有所需权限
  3. 根据权限检查结果决定是否渲染按钮

关于权限高阶组件:

高阶组件接受一个组件返回一个组件

接收两个参数:按钮需要的权限和目前用户的权限

function withPermissons(requiredPermisson : string[] , userPermission : string[]){

返回一个高阶组件:

高阶组件接收一个组件->返回一个组件

 return function(Component : React.FC){return function(prpps : any){}}

在组件当中进行判断:只有requiredPermisson当中都有userPermission才返回组件

 const hasPermission = requiredPermisson.every((item) => userPermission.includes(item));if(!hasPermission){return null;}else {return <Component {...prpps} />}

使用高阶组件:

  const DeleteButton = withPermissons(["delete"],JSON.parse(sessionStorage.getItem("authBtn") as string))(Button);

整体代码实现:

// 我们这里面返回一个高阶组件,高阶组件接受一个组件返回一个组件
// 接收两个参数:按钮需要的权限和目前用户的权限
function withPermissons(requiredPermisson : string[] , userPermission : string[]){return function(Component : React.FC){return function(prpps : any){// 在这里面进行权限的判断// 只有reqire里面的权限user都有才返回组件const hasPermission = requiredPermisson.every((item) => userPermission.includes(item));if(!hasPermission){return null;}else {return <Component {...prpps} />}}}
}export default withPermissons;
  // 自制一个buttonconst DeleteButton = withPermissons(["delete"],JSON.parse(sessionStorage.getItem("authBtn") as string))(Button);
      <DeleteButton size="small" type="primary" danger className="mt">删除账号</DeleteButton>

在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/612155.html

相关文章:

  • 对 .NET线程 异常退出引发程序崩溃的反思
  • PowerShell部署Windows爬虫自动化方案
  • 玩转 InfluxDB 3:用 HTTP API 快速创建高效数据表
  • 【Linux】调试器gdb/cgdb的使用
  • 信号处理:信号产生
  • 张艺兴续约担任传音手机全球品牌代言人 携手共启创新征程
  • 企业级DDoS防护实战案例
  • 数字取证和网络安全:了解两者的交叉点和重要性
  • 什么是 Kafka 中的消息?它由哪些部分组成
  • 《设计模式之禅》笔记摘录 - 13.迭代器模式
  • JP3-4-MyClub后台前端(二)
  • leetcode 3479. 水果成篮 III 中等
  • 多端同步新解法:Joplin+cpolar联合通过开源设计实现跨平台无缝协作?
  • 【学习笔记之redis】删除缓存
  • vue3 el-select el-option 使用
  • 学习嵌入式之硬件——ARM体系
  • CubeFS存储(一)
  • 【前端开发】四. JS内置函数
  • [特殊字符]企业游学 | 探秘字节,解锁AI科技新密码
  • 【Linux】重生之从零开始学习运维之主从MGR高可用
  • 无人机航拍数据集|第6期 无人机垃圾目标检测YOLO数据集772张yolov11/yolov8/yolov5可训练
  • 【python】OpenCV—Defect Detection
  • AI浪潮下,FPGA如何实现自我重塑与行业变革
  • 深度模拟用户行为:用Playwright爬取B站弹幕与评论数据
  • 2025年高防IP隐身术:四层架构拆解源站IP“消失之谜”
  • 微算法科技(NASDAQ:MLGO)利用鸽群分散算法,提高区块链交易匹配算法效能
  • Kafka ISR机制和Raft区别:副本数优化的秘密
  • 智能提示词引擎的革新与应用:PromptPilot使用全解析
  • 北京JAVA基础面试30天打卡03
  • PDF注释的加载和保存的实现