【发布时间】:2019-09-06 20:05:43
【问题描述】:
我正在尝试在 ReactJS 中做一个简单的 PrivateRoute,最初当我编写 PrivateRoute 函数时,它不会重定向到它设置到的组件。
这是原来的PrivateRoute组件
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
const PrivateRoute = ({component: Component, authenticated , ...rest}) => {
return (
<Route {...rest} render={(props) => (
authenticated === true
? <Component {...props} />
: <Redirect to='/login' />
)}/>
)
}
export default PrivateRoute;
然后我编辑了PrivateRoute 组件以摆脱{...rest} 属性,它工作正常,它重定向到受保护的页面。但是每当我编辑PrivateRoute 组件并且浏览器刷新时,它们包括我编辑的页面和重定向页面,就好像我同时注销和登录一样。事后看来,如果authenticated 不正确,我重定向的/login 页面将位于首页,而受保护的组件将位于同一页面的正下方。
这是在刷新新页面之前工作的组件
import React from 'react';
import { Route, Redirect } from 'react-router-dom';
const PrivateRoute = ({component: Component, authenticated ,}) =>
{
return (
<Route render={(props) => (
authenticated === true
? <Component {...props} />
: <Redirect to='/login' />
)}/>
)
}
export default PrivateRoute;
任何帮助将不胜感激,这是我的 App.js
<BrowserRouter>
<Route path="/" component = {LandingPage} exact/>
<Route path="/login" component={Login} exact/>
<Route path="/register" component={Register} exact/>
<PrivateRoute path="/dash" component={Dash} authenticated={authenticated}/>
</BrowserRouter>
【问题讨论】:
标签: reactjs routes react-router-dom