React动态权限控制失效,组件没按角色切换显示
我在做用户角色切换时动态控制按钮权限,根据用户权限数组渲染组件。但切换角色后按钮没变化,哪里出问题了?
比如当前用useState存用户权限,用includes判断是否显示:
function AdminButton({ permissions }) {
return (
{permissions.includes('admin') && (
<button>删除数据</button>
)}
)
}
在父组件用useEffect监听权限变化:
const [userRole, setRole] = useState('guest');
useEffect(() => {
if (userRole === 'admin') {
// 更新权限数组
}
}, [userRole]);
但实际测试时,切换userRole为admin后按钮仍然不显示。控制台没报错,权限数组确实在变化,是什么原因导致组件没重新渲染?
改成这样: