页面呈现前未设置身份验证状态道具
Authentication state prop not set before page rendering
我在我的简单反应项目中使用 redux,我正在设置受保护的路由,如果用户未登录,它应该触发重定向。
我的初始状态看起来像这样:
const INITIAL_STATE = {
email: '',
password: '',
error: '',
loading: false,
loggedIn: false
};
我的组件中的渲染函数如下所示:
if (!loggedIn) {
return (<Spinner />);
}
if (loggedIn === false) {
return (
<Redirect to={{
pathname: '/login',
state: { from: this.props.location }
}} />
)
}
return (
<Route {...this.props} />
)
现在,当用户登录时,一切正常,显示微调器直到内容加载完毕。
当用户未登录时出现问题,然后显示微调器并且没有其他任何反应,基本上不会调用重定向。我可以在控制台中看到状态仅在我 运行 组件时设置,并且以后根本不会更新,因为我没有调用任何函数。我想知道我是否应该在 componentWillMount() 部分设置一个额外的功能,或者类似的东西?还是我只是在乱搞 undefined 和 false?
你有两个语句检查相同的东西 !loggedIn
,它到达第一个语句导致 spinner
因为 return
它没有进一步。
假设 loading
工作正常,你可以试试这个 -
if (!loggedIn) {
return (
<Redirect to={{
pathname: '/login',
state: { from: this.props.location }
}} />
)
}
if (loading) {
return (<Spinner />);
}
return (
<Route {...this.props} />
)
我在我的简单反应项目中使用 redux,我正在设置受保护的路由,如果用户未登录,它应该触发重定向。
我的初始状态看起来像这样:
const INITIAL_STATE = {
email: '',
password: '',
error: '',
loading: false,
loggedIn: false
};
我的组件中的渲染函数如下所示:
if (!loggedIn) {
return (<Spinner />);
}
if (loggedIn === false) {
return (
<Redirect to={{
pathname: '/login',
state: { from: this.props.location }
}} />
)
}
return (
<Route {...this.props} />
)
现在,当用户登录时,一切正常,显示微调器直到内容加载完毕。
当用户未登录时出现问题,然后显示微调器并且没有其他任何反应,基本上不会调用重定向。我可以在控制台中看到状态仅在我 运行 组件时设置,并且以后根本不会更新,因为我没有调用任何函数。我想知道我是否应该在 componentWillMount() 部分设置一个额外的功能,或者类似的东西?还是我只是在乱搞 undefined 和 false?
你有两个语句检查相同的东西 !loggedIn
,它到达第一个语句导致 spinner
因为 return
它没有进一步。
假设 loading
工作正常,你可以试试这个 -
if (!loggedIn) {
return (
<Redirect to={{
pathname: '/login',
state: { from: this.props.location }
}} />
)
}
if (loading) {
return (<Spinner />);
}
return (
<Route {...this.props} />
)