Я могу предложить написать компонент более высокого порядка, который принимает роли, которые могут видеть функцию.
const AuthorizeOnly = ({ children, allowedRoles, user }) => (
allowedRoles.includes(user.role)
&& (
<React.Fragment>
{children}
</React.Fragment>
)
);
// некоторый компонент
loggedInUser = {
name:'john',
role:'admin'
}
render(){
<div>
<AuthorizedOnly allowedRoles={['admin']} user={loggedInUser}>
<p>only admin can see this.</p>
</AuthorizedOnly>
</div>
}
Вы можете настроить логику внутри компонента AuthorizedOnly
на основе вашей бизнес-логики.
Для маршрутизатора вы можете использоватьаналогичный компонент, который возвращает Route
в зависимости от вашего состояния