Выполнение вызовов SessionStorage с использованием asyn c ожидает в React - PullRequest
3 голосов
/ 14 января 2020

У меня есть функциональный Компонент, который имеет следующий код.

import { isUserAuthCheck } from "../../Utils/SessionStorage";

function DefaultPage({ history }) {
  useEffect(() => void (isUserAuthCheck ? history.push("/home") : null));

и в моем Utils / SessionStorage, у меня есть следующее

export const isUserAuthCheck =
  sessionStorage.getItem("isUserAuthenticated") === "true";
export const getIsUserAuthenticated = sessionStorage.getItem(
  "isUserAuthenticated"
);
export const setValueInSession = (key, value) =>
  sessionStorage.setItem(key, value);

export const setIsUserAuthenticated = str =>
  sessionStorage.setItem("isUserAuthenticated", str);

Проблема здесь, isUserAuthCheck похоже, не обновляется каждый раз, когда есть изменения в sessionStorage. Как я могу убедиться, что он обновляется каждый раз, когда меняется sessionStorage.

Любая помощь приветствуется.

1 Ответ

3 голосов
/ 14 января 2020

Потому что это не функция. Он не запускает проверку каждый раз, когда вы звоните. Вы должны сделать это функцией для запуска проверки снова.

export const isUserAuthCheck = () =>
  sessionStorage.getItem("isUserAuthenticated") === "true";

Или вы можете обновлять ее каждый раз, когда вы устанавливаете значение для isUserAuthenticated, но это const, поэтому вам придется изменить это.

РЕДАКТИРОВАТЬ:

Если вы хотите, чтобы это было getter, как я уже говорил:

enter image description here

Также избегайте использования "true" или каких-либо подобных вещей. Существует причина, по которой тип bool доступен

...