Реагировать перезагрузить маршрутизатор обратно на ту же страницу или маршрут после проверки на подлинность - PullRequest
0 голосов
/ 27 февраля 2020

Я уже некоторое время использую 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>
  )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...