Вернуться на тот же маршрут после входа в систему РЕАКТ - PullRequest
0 голосов
/ 17 апреля 2020

Я выполняю проверку подлинности с помощью firebase в моем приложении,

В моем приложении. js Я использую этот метод ..

store.dispatch(isLoggedIn())

и это то, что isLoggedIn() делает

export const isLoggedIn = () => dispatch => {
  API.auth().onAuthStateChanged(user => {
    if (user) {
      dispatch(setCurrentUser(user))
    } else {
      dispatch(setCurrentUser({}))
    }
  })
}

и в приложении. js У меня есть

store.dispatch(isLoggedIn())

class App extends Component {
  render() {
    return (
      <Provider store={store}>
        <Router>
          <React.Fragment>
            <Route exact path="/login" component={Login} />
            <Switch>
              <PrivateRoute exact path="/" component={Dashboard} />
            </Switch>
            <Switch>
              <PrivateRoute
                exact
                path="/stats"
                component={Stats}
              />
            </Switch>
          </React.Fragment>
        </Router>
      </Provider>
    )
  }
}

export default App;

Также для PrivateRoute я использую это

import React from 'react';
import { Route, Redirect } from 'react-router-dom';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';

const PrivateRoute = ({ component: Component, auth, ...rest }) => (
  <Route
    {...rest}
    render={props =>
      auth.isAuthenticated === true ? (
        <Component {...props} />
      ) : (
        <Redirect to="/login" />
      )
    }
  />
);

PrivateRoute.propTypes = {
  auth: PropTypes.object.isRequired
};

const mapStateToProps = state => ({
  auth: state.auth
});

export default connect(mapStateToProps)(PrivateRoute);

Теперь проблема в том, isLoggedIn ( ), но вот как.

Я получу /, и он перенаправит меня на /login, а затем вызовется isLoggedIn?

это вернет меня назад /, но когда я go к /stats, оно вернет меня к login, а затем снова к /, а не к /stats? ?

Как мне go вернуться на страницу, с которой я начал? без аутентификации?

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете ввести дополнительное состояние для неопределенного состояния аутентификации, а затем визуализировать маршрутизатор только после того, как состояние аутентификации уже известно. Это предотвратит преждевременное перенаправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...