[我在我的应用程序中使用redux saga,我有一个登录表单,当我通过身份验证时,我使用重定向组件移至该应用程序,我当然会在更改connectedUser
状态后执行此操作,就像这样:
const initialState = {
loading: false,
user: {},
status: ""
};
[当验证我的状态时更改为status:"AUTH"
和user: { // user data }
,这是我如何重定向到Application组件,这是我的Authentication组件呈现方法的样子:
render() {
if (this.props.connectedUser.status === "AUTH") {
return <Redirect to="/" />;
}
return MyLoginForm
}
我的路线在整个应用容器中定义:
function App(props) {
return (
<ThemeProvider theme={theme}>
<I18nProvider locale={props.language.language}>
<BrowserRouter>
<Switch>
<Route exact path="/" component={Application}></Route>
<Route path="/authenticate" component={Authentification}></Route>
</Switch>
</BrowserRouter>
</I18nProvider>
</ThemeProvider>
);
}
const msp = state => ({ language: state.language });
export default connect(msp, null)(App);
这可以正常工作,断开按钮也可以正常工作,但是当我重定向到我的应用程序(即此路由“ /”)时,会出现问题。
我希望当我刷新页面时,我不会重定向到身份验证页面,为什么要去那里?很明显,我的状态又是初始状态,状态又是“”。
我不是要代码,而是一个想法,如何实现这一点。
我试图将这种状态放入我的localStorage中,但是我不认为这是一个好习惯,我也发现了一个问题,因为如果更改了LocalStorage,那么我将不得不重新呈现该组件,因此可以验证。
I want that when I refresh the page, I don't get redirected to the authentification page, Why I am going there ? it is obvious that my state is the initial state again, the satus is "" again.
当然!刷新页面将再次恢复初始状态。
首先,登录后需要存储当前身份验证。建议您使用redux-sessionstorage
接下来,在身份验证组件中,您应该调度一个操作以获取当前身份验证并更新您的状态。