Переменные const не обновляются без перезагрузки окна - PullRequest
0 голосов
/ 01 апреля 2019

Я пытаюсь перенаправить мою страницу входа на мою главную страницу. Я делаю это с помощью:

this.props.history.push("/userdashboard");

Это работает, но на главной странице есть переменные const, извлеченные из Constants.js, который содержит USER_ID, установленный из локального хранилища:

let user_id = null;
try {
  user_id =
    window.localStorage.getItem("user_info") &&
    JSON.parse(window.localStorage.getItem("user_info")).user_id;
} catch (err) {
  console.error("Error Parsing user_info user_id");
}
const USER_ID = user_id;

export { USER_ID };

и затем импортируется с

import { USER_ID} from "../constants/Constants";

Проблема в том, что эти константы по-прежнему нулевые и не содержат новую информацию, пока страница не будет перезагружена.

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

Это с моей страницы входа, которая ждет завершения действия и затем нажимает

this.props.loginFunc(login_data).then(() => this.completeLogin());

completeLogin() {
  this.props.history.push("/userdashboard");
}

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

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я не уверен, что const против let (против var, я полагаю) имеет значение, здесь.Что важно, что localStorage читается один раз. Когда предполагается обновить после одного начального чтения?Я не вижу этот кусок кода.

Поместите эту строку

user_id = window.localStorage.getItem("user_info") && JSON.parse(window.localStorage.getItem("user_info")).user_id;

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

0 голосов
/ 01 апреля 2019

Весь смысл констант заключается в том, что они не могут быть переназначены. Таким образом, каждый раз, когда Constants.js импортируется, он всегда будет использовать предыдущее значение const.

У вас уже есть переменная let user_id, просто экспортируйте эту

let user_id = null
try {
  user_id = window.localStorage.getItem("user_info") && JSON.parse(window.localStorage.getItem("user_info")).user_id
}
catch(err) {
  console.error("Error Parsing user_info user_id")
}

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