我尝试了所有可以找到的答案,这是我的路线:
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:无法读取的属性'id' 空
constructor(props) {
super(props);
this.state = {
userId: JSON.parse(localStorage.getItem('logged')).id,
loginRole: localStorage.getItem('loggedRole')
}
};
我在这里做什么错了?
谢谢!
编辑:如果用户未登录,我没有任何ID。这就是重点。 :)如果用户未登录,则应重定向回/ login。
答案 0 :(得分:0)
首先,您需要在localStorage中设置项目
localStorage.setItem('name', value )
答案 1 :(得分:0)
我不确定您之前如何设置localStorage对象。
var userobj = { id : 12 }
localStorage.setItem('logged',JSON.stringify(userobj))
然后尝试像JSON.parse(localStorage.getItem('logged')).id; //return 12
这是需要做的。如果您收到的token
具有ID,则必须先手动设置它:)