React表格组件如何根据角色动态隐藏特定列?
我现在在做用户管理页面,不同角色需要看到的表格列不一样。比如普通用户只能看姓名和邮箱,管理员还能看到创建时间和角色列。尝试用条件渲染写成这样:
function UserTable({ users, role }) {
return (
<table>
<thead>
<tr>
<th>姓名</th>
<th>邮箱</th>
{role === 'admin' && <th>创建时间</th>}
{role === 'admin' && <th>角色</th>}
</tr>
</thead>
{/* 表格行渲染... */}
</table>
)
}
但这样写感觉很笨重,特别是列多起来后维护困难。想用列配置数组来管理,但不确定如何把权限判断和列配置结合起来。有没有更优雅的解决方案?或者用第三方表格组件有现成方案吗?
你可以这样改:
然后在组件里写一个权限判断函数:
最后在 JSX 中动态渲染表头和表格内容:
这样改完之后,以后新增列或者调整权限都只需要改 columns 配置。如果后面功能复杂了,也可以考虑用现成的 React 表格组件,比如 react-table 或 material-ui 的 DataGrid,它们都支持列隐藏功能。
希望能帮到你!