【问题标题】:react js localstorage value object [duplicate]反应js localstorage值对象[重复]
【发布时间】:2020-03-24 11:46:52
【问题描述】:

我将从后端获得的内容保存到本地存储中:+

   async onSubmit(e){
        e.preventDefault();
        const {login, password } = this.state;

        const response = await api.post('/login', { login,password });
        const user = response.data.user;
        const {jwt} = response.data;
        console.log(user);
        localStorage.setItem('token', jwt);
        localStorage.setItem('user', user);
        this.props.history.push("/home");
    }

我的

const user = response.data.user;

返回这个:

{id: 2, name: "spt", email: "email", login: "spt", password: "$2a$10$Rqc1VU1TfKD6MypNzbgemeR0O4YeXIFy1XiURjNeHk0gpWJitp4da", …}

两个对象 [对象对象]

【问题讨论】:

  • 你能澄清你的问题吗?

标签: javascript reactjs local-storage


【解决方案1】:

本地存储是key-value存储,key是string,value也是string。

你必须对你的数据进行字符串化,你可以这样做

localStorage.setItem('user', JSON.stringify(user));

然后得到它喜欢

const user = JSON.parse(localStorage.getItem('user'));

【讨论】:

  • 您好,我按照您所说的做了,并通过套接字与我的后端联系,我发送了 const player = JSON.parse (localStorage.getItem ('user')); this.socket.emit('addPlayer-Queue', player);
  • 但是我的后端没有收到这个值,如果我将值更改为 1 例如我的后端得到
  • @Felipe socket 也接受字符串,在使用 socket 发送之前你不应该做 JSON.parse
  • 由于某种原因我没有在后端得到这个值
  • 我需要这样做: const player = localStorage.getItem('user') ?
【解决方案2】:

localstorage 不支持对象。如果要将用户存储在localstorage中,则需要对其进行字符串化:JSON.stringify(user)

如果要存储对象,可以使用第三方 NPM 模块,例如 localforage(并非所有浏览器都支持)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多