【发布时间】:2020-04-16 17:11:19
【问题描述】:
我的应用组件重定向一个使用过的,如果他们已经登录 = true,我在尝试了各种方法后使用了一个在线示例,如果有更简单的功能反应方式来做到这一点,请告诉我,
如果用户已登录,我希望他们转到 /createpost 否则我希望他们转到 /login 路由,我想保护用户必须登录的 /createpost 路由,但这是一项任务再一次,虽然想法很感激..
沙盒:https://codesandbox.io/s/focused-sammet-eitqr
我的应用组件
const App = () => {
return (
<Router>
<Switch>
<Route component={Navbar} />
<Route exact path="/Home" component={Home} />
<Route exact path="/posts" component={ViewPost} />
<Route exact path="/login" component={Login} />
<Route exact path="/register" component={Register} />
<PrivateRoute
path="/createpost"
component={CreatePost}
isAuthenticated={false}
/>
</Switch>
</Router>
);
};
PrivateRoute 组件
export const PrivateRoute = ({
component: Component,
isAuthenticated,
...rest
}) => (
<Route
{...rest}
render={props =>
isAuthenticated ? (
<Component {...props} />
) : (
<Redirect
to={{
pathname: "/login",
state: { from: props.location }
}}
/>
)
}
/>
);
【问题讨论】:
-
为了导入一个没有
{ }s 的组件名称,你应该将它导出为default,你的代码框会抛出一个错误。看看这个:stackoverflow.com/q/31852933/4636715 -
抱歉修正了,第一次错过。
-
看看thisdemo
-
真的很酷,谢谢
标签: javascript reactjs express react-router