首页 > 解决方案 > 检查 cookie 并将结果记录到 React

问题描述

我想检查一个 cookie 是否存在,如果不存在,我想给 cookieauth一个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。控制台没有显示其他错误或警告。

标签: javascriptreactjs

解决方案


你确定 AuthCookie 是空的吗,也许它是未定义的,尽管如果不显示它最初分配给 localStorage 的位置,我们就无法知道。

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


推荐阅读