我想检查cookie是否存在,如果不存在,我想给cookie auth
一个false
值。如果cookie是false
,我想重定向到/
,如果cookie是true
,它应该重定向到/home
。因为我似乎无法使它正常工作,所以我删除了重定向并将其更改为console.log("value");
,以便可以查看它是否有效。
checkLogin() {
var AuthCookie = localStorage.getItem("auth");
if (AuthCookie === null) {
console.log("null");
localStorage.setItem("auth", false);
}
if (AuthCookie === false) {
console.log("false");
}
else if (AuthCookie === true) {
console.log("true");
}
else {
console.log("AuthCookie is neither false or true");
}
}
控制台中没有此代码的输出,我也不知道为什么。
我想在本地存储数据,在这种情况下,这是一个登录页面,但这只是为了测试数据的存储。
import React, {Component} from 'react';
import ReactDOM from 'react-dom';
import { Redirect, Router } from 'react-router-dom';
import * as serviceWorker from './serviceWorker';
import Routes from './inc/routes';
import Navbar from './components/parts/navbar';
class Loader extends Component {
checkLogin() {
var AuthCookie = localStorage.getItem("auth");
if (AuthCookie === null) {
console.log("null");
localStorage.setItem("auth", false);
}
if (AuthCookie === false) {
console.log("false");
}
else if (AuthCookie === true) {
console.log("true");
}
else {
console.log("AuthCookie is neither false or true");
}
}
render() {
this.checkLogin();
return (
<div>
<Navbar />
<Routes />
</div>
);
}
}
ReactDOM.render(<Loader />, document.getElementById('root'));
控制台现在给了我AuthCookie is neither false or true
,但是当我查看应用程序和本地存储时,它说auth
是false
。控制台不会显示其他错误或警告。
答案 0 :(得分:0)
您确定AuthCookie为空,也许未定义,尽管我们不知道最初没有将其分配给localStorage的地方。
尝试在调试时向后工作,因此请在调用该函数时从控制台登录AuthCookie开始,这样可以确保为它分配了期望的值。否则,请返回到分配给localStorage的位置,然后检查那里的值。我们无法确定所提供的代码,但id表示该值不是您认为的那样。
答案 1 :(得分:0)
所以我犯了3个错误,首先是if (AuthCookie === null)
,应该是undefined
。第二个错误是var AuthCookie
在if (AuthCookie === undefined)
之后没有更新,因此AuthCookie
未被更新为新值。最后一个错误是该值应位于""
中,因此应为(AuthCookie === "false")
。
现在可以使用的正确代码:
var AuthCookie = localStorage.getItem("auth");
if (AuthCookie === undefined) {
console.log("null");
localStorage.setItem("auth", false);
}
var AuthCookie = localStorage.getItem("auth");
if (AuthCookie === "false") {
console.log("false");
}
else if (AuthCookie === "true") {
console.log("true");
}
else {
console.log("The cookie is set, but can't be read or has a different value");
}