【发布时间】:2020-02-20 10:40:20
【问题描述】:
我正在创建一条私有路由,如下所示。
const PrivateRoute = (props) => {
const { component: Component, path } = props;
const isAuthenticated = true;
return (
<Route
// exact (1)
path={path}
render={() => (
isAuthenticated
? (
<Component />
)
: (
<Redirect
to="/"
/>
))}
/>
);
};
我在app js文件中实现如下。
<Router>
<Switch>
<PrivateRoutes
// exact (2)
path="/users"
component={Users}
/>
<PrivateRoutes
// exact (3)
path="/users/add"
component={AddUser}
/>
</Switch>
</Router>
我注意到以下行为是基于我在位置 (1),(2),(3)
中评论 exact 关键字- 当 1、2、3 被评论时,AddUser 组件在我转到 /users/add 时可见
- 当只有 2,3 被评论时,当我转到 /users/add 时,AddUser 组件会给出一个空白屏幕
- 当只有 1 被注释时,AddUser 组件在我转到 /users/add 时可见
- 当 1、2、3 被不评论时,AddUser 组件在我转到 /users/add 时可见
我认为我们只需要将确切的关键字传递给我们从 react-router 导入的路由组件。但是在上述任何一种情况下,不放 exact on 导致 AddUsers 组件不呈现。
这种行为的原因是什么?
【问题讨论】:
标签: reactjs react-router react-router-dom