我目前有一组路由,我希望只有在用户具有某个用户角色时才能访问这些路由,让我们说一个Admin角色。
我希望这些路由包含在一个组件中,比如说Auth
,它将检查用户对所需角色的角色。
<Switch>
<Auth roles={['user']}>
<Route exact path="/repos/" component={Repos} />
<Route exact path="/repos/:repo" component={Repo} />
</Auth>
<Auth roles={['admin']}>
<Route exact path="/repos/:repo/settings" component={RepoSettings} />
</Auth>
</Switch>
Auth
就像这样,
const AuthWrapper = ({ children, roles, ...props }) => {
if (Authenticator(roles)) {
return React.Children.map(
children,
(child, i) => (React.cloneElement(child, {
key: i, ...props,
})),
);
}
return null;
};
但问题是,当我转到Repos
或Repo
时,/repos/
和/repos/somerepo
组件都会被渲染!
最后如何呈现它是这样的,
这是一个带有我的代码的游乐场:https://codesandbox.io/s/oo7lzpww6q
答案 0 :(得分:2)