Я создаю простое приложение реагирования с аутентификационным потоком и навигацией с реактивным маршрутизатором dom. Поток аутентификации, который я пытаюсь создать, заключается в том, что, когда пользователь аутентифицирован, он перенаправляет на путь / dashboard, а не на /login.
. Для аутентификации я использую API-интерфейс узла со стратегией паспорта Google OAuth 2 , У меня есть избыточное действие, которое отправляет запрос на мой сервер, а затем я отправляю его на редуктор.
Я успешно получаю информацию о пользователе, но проблема здесь.
При запуске приложения отрисовка непосредственно маршрутизатор, и в настоящее время у нее нет информации о пользователе, поэтому мы не перенаправляем на панель инструментов, но после действия, вызываемого приложением, есть информация о пользователе, но не выполняется повторная визуализация страницы
здесь мой код
AppRouter. js
const AppRouter = ({fetchUser,auth}) => {
useEffect(() => {
fetchUser();
}, []);
console.log("App Router Signed in " ,auth);
return (
<BrowserRouter>
<Route exact path="/" render={() => <Redirect to={auth ? '/dashboard' : '/login'}/>}/>
<Switch>
<Route exact path="/login" component={Login} />
<PrivateRoute exact path="/dashboard" ><DashboardLayout/></PrivateRoute>
</Switch>
</BrowserRouter>
)
};
function mapStateToProps({ auth }) {
return { auth };
}
const mapDispatchToProps = dispatch => ({
fetchUser: () => dispatch(fetchUser())
});
export default connect(mapStateToProps, mapDispatchToProps)(AppRouter);
Приложение. js
class App extends Component {
render() {
return (
<Provider store={store}>
<AppRouter/>
</Provider>
);
}
}
export default App;
Вы также можете посмотреть на моей консоли Google вы увидите Сначала я получаю auth = null, но после того, как auth равен моему пользовательскому объекту
Может быть, мне нужно использовать другие методы LifeCycle?