我已经尝试了所有可以找到的答案,这是我的路线:
const loggedIn = !!localStorage.getItem('token');
const Routes = () => (
<div>
<Switch>
<Route exact path="/" render={() => (
!loggedIn ? (
<Redirect to="/login" />
) : (
<Redirect to="/welcome" />
)
)}/>
</Switch>
</div>
);
export default Routes;
但是,它仍然无法工作..我在其他容器上收到错误:
menuContainer.js:10未捕获的TypeError:无法读取null的属性“id”
constructor(props) {
super(props);
this.state = {
userId: JSON.parse(localStorage.getItem('logged')).id,
loginRole: localStorage.getItem('loggedRole')
}
};
我在这做错了什么?
谢谢!
编辑:如果用户没有登录,我没有任何ID。这就是重点。 :)如果用户未登录,则应重定向回/ login。
首先,您需要在localStorage中设置项目
localStorage.setItem('name', value )
我不知道你之前如何设置localStorage对象。
var userobj = { id : 12 }
localStorage.setItem('logged',JSON.stringify(userobj))
然后尝试像JSON.parse(localStorage.getItem('logged')).id; //return 12
一样
这就是它需要做的事情。如果你收到的token
有id,你必须在获取之前手动设置它:)