检查cookie并将结果记录在React中

时间:2018-11-19 13:00:52

标签: javascript reactjs

我想检查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,但是当我查看应用程序和本地存储时,它说authfalse。控制台不会显示其他错误或警告。

2 个答案:

答案 0 :(得分:0)

您确定AuthCookie为空,也许未定义,尽管我们不知道最初没有将其分配给localStorage的地方。

尝试在调试时向后工作,因此请在调用该函数时从控制台登录AuthCookie开始,这样可以确保为它分配了期望的值。否则,请返回到分配给localStorage的位置,然后检查那里的值。我们无法确定所提供的代码,但id表示该值不是您认为的那样。

答案 1 :(得分:0)

所以我犯了3个错误,首先是if (AuthCookie === null),应该是undefined。第二个错误是var AuthCookieif (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");
}