Как получить UserId из localStorage - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь создать блог, на определенной конечной точке я хочу перечислить все блоги, созданные только указанным c пользователем, поэтому я сохранил информацию о пользователе в локальном хранилище и пытаюсь получить имя пользователя того же самого, так что я могу отправить имя пользователя на бэкэнд, чтобы блоги были опубликованы этим указанным c имя пользователя.

set cook ie

import cookie from 'js-cookie';

export const setCookie = (key, value) => {
    if (process.browser) {
        cookie.set(key, value, {
            expires: 1
        });
    }
};

приготовить ie

// get cookie
export const getCookie = key => {
    if (process.browser) {
        return cookie.get(key);
    }
};

установить LocalStorage

export const setLocalStorage = (key, value) => {
    if (process.browser) {
        localStorage.setItem(key, JSON.stringify(value));
    }
};

действие isAuth

export const isAuth = () => {
        if(process.browser ) {
            const cookieChecked = getCookie('token')
            if(cookieChecked){
                if(localStorage.getItem('user')){
                    return JSON.parse(localStorage.getItem('user'))
                }else{
                    return false;
                }
            }
        }
    }

Это информация, которая у меня есть хранится в локальном хранилище

{_id: "5ece659149421c1f18c0c756", username: "2asjvwxkq", name: "test3", email: "test3@gmail.com", role: 0}
email: "test3@gmail.com"
name: "test3"
role: 0
username: "2asjvwxkq"
_id: "5ece659149421c1f18c0c756"

Я пытался сделать const username = isAuth() && isAuth().username

Но он возвращает undefined

Я хочу отправить username в качестве реквизита в компонент, но переменная username получает неопределенное значение.

Обновление : JSON.stringify(username) дает мне имя пользователя, но я не могу отправить его на бэкэнд


Screenshot of LocalStorage key

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Попробуйте выполнить

Предложение 1 :

const username = isAuth() ? isAuth().username : '' или используйте useEffect() там, где это необходимо.


Предложение 2:

Вместо отправки реквизита напрямую вызовите функцию
isAuth() внутри компонента, который вы хотите отправить в первую очередь (если это ни на что не повлияет) и просто для отладки попробуйте сделать JSON.stringify(user)

0 голосов
/ 27 мая 2020

Привет

Я сделал для вас все просто. Думаю, проблема в методе json.parse. посмотрите мой пример

export const isAuth = () => {

    if (localStorage.getItem('user')) {
        return localStorage.getItem('user');
    } else {
        return false;
    }
}

и в моем приложении. js

import React from 'react';
import logo from './logo.svg';
import './App.css';
import {isAuth} from './isAuth'

function App() {
  localStorage.setItem('user', 'bahtiyar');
  const userName=isAuth();

  return (
    <div className="App">
     <div>{userName}</div>
    </div>
  );
}

export default App;

посмотрите результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...