Я уже некоторое время использую reactjs и реагирующий маршрутизатор в своих проектах, и в большинстве моих проектов я столкнулся с проблемой. Проблема заключается в том, что, как только я перезагружаю браузер, приложение проверяет, аутентифицирован ли я, и если я аутентифицируюсь, он всегда перенаправляет на панель управления.
Как я могу это исправить, чтобы вернуться к указанному c маршрут, на котором я был ранее, вместо того, чтобы возвращать меня на панель инструментов?
ниже - мой publi c маршрут.
function PublicRoutes({
component: Component,
render,
isAuthenticated,
...rest
}) {
return (
<Route
{...rest}
component={props =>
isAuthenticated ? (
<div>
<Redirect to='/dashboard' />
</div>
) : Component ? (
<Component {...props} />
) : (
render({ ...props })
)
}></Route>
)
}
ниже - мой файл маршрутов, в котором настроены все маршруты. Я также запускаю функцию, чтобы проверить, есть ли в данный момент пользователь, прошедший аутентификацию на этом компоненте.
function Routes({ loadUser }) {
useEffect(() => {
let isMounted = true
if (isMounted) {
loadUser()
}
return () => (isMounted = false)
}, [loadUser])
return (
<Router history={history}>
<Switch>
<PublicRoutes exact path='/' component={App} />
<PublicRoutes exact path='/login' component={Login} />
<PublicRoutes
exact
path='/confirmation/thank-you'
component={Success}
/>
<PrivateRoutes exact path='/dashboard' component={Dashboard} />
<PrivateRoutes exact path='/dashoffers' component={DashOffers} />
<PrivateRoutes exact path='/adduser' component={AddUser} />
<PrivateRoutes exact path='/addoffers' component={Addoffers} />
<PrivateRoutes exact path='/pipeline' component={Pipeline} />
<PrivateRoutes exact path='/customers' component={Customers} />
<PrivateRoutes exact path='/quotations' component={Quotations} />
<PrivateRoutes exact path='/createlead' component={CreateLead} />
<PrivateRoutes exact path='/newcustomer' component={CreateCustomer} />
<PrivateRoutes exact path='/createquote' component={AddQuote} />
<PrivateRoutes
exact
path='/customer/:id'
render={props => (
<CustomerPage key={props.match.params.id} {...props} />
)}
/>
<PrivateRoutes
exact
path='/lead/:id'
render={props => <LeadPage key={props.match.params.id} {...props} />}
/>
<PrivateRoutes
exact
path='/editlead/:id'
render={props => <EditLead key={props.match.params.id} {...props} />}
/>
<PrivateRoutes
exact
path='/editcustomer/:id'
render={props => (
<EditCustomer key={props.match.params.id} {...props} />
)}
/>
<PrivateRoutes
exact
path='/editoffer/:id'
render={props => <Editoffer key={props.match.params.id} {...props} />}
/>
<PublicRoutes
exact
path='/:title'
render={props => <Landing key={props.location.state} {...props} />}
/>
<Route exact path='*' component={NotFound} />
</Switch>
</Router>
)
}