前端如何根据用户角色动态控制按钮的显示与禁用?
我在做后台管理系统,不同角色(比如管理员、编辑、访客)能看到的操作按钮不一样。现在后端会返回用户的 roles 字段,比如 ['admin'] 或 ['editor'],但我不确定在 React 里怎么优雅地控制按钮的渲染和禁用状态。
我试过在组件里写一堆 if 判断,但代码太乱了。也看过一些权限指令的方案,但不确定哪种适合我们项目。有没有比较通用又不啰嗦的做法?
比如下面这个删除按钮,只有 admin 能点,editor 只能看不能点:
const DeleteButton = ({ userRoles }) => {
const canDelete = userRoles.includes('admin');
const isVisible = userRoles.includes('admin') || userRoles.includes('editor');
if (!isVisible) return null;
return (
<button disabled={!canDelete}>
删除
</button>
);
};
先定义一个权限配置:
然后改你的按钮组件:
这样结构更清晰,以后要加新角色或修改权限也方便。把这段代码复制过去试试,应该能解决问题。
首先定义一个权限配置文件:
然后写个简单的权限检查函数:
这样你的按钮组件就能简化成这样:
这个写法的好处是你以后加新权限或者改权限规则,只要改那个 permissions 对象就行,不用到处找 if 判断。虽然多了一层封装,但代码可维护性提高了不少,也更容易测试。
说实话这玩意儿挺常见的,每个项目都得搞一遍,改改就能用,不用太纠结。累了就喝杯咖啡继续写代码吧。