Почему по-прежнему получать данные из локального хранилища после удаления в React? - PullRequest
0 голосов
/ 01 октября 2018

Я определяю свое локальное хранилище так:

export default new class LocalStorage {
  setItem(key, data) {
    window.localStorage.setItem(key, JSON.stringify(data));
  }

  getItem(key) {
    return JSON.parse(window.localStorage.getItem(key));
  }

  removeItem(key) {
    window.localStorage.removeItem(key);
  }
}();

и мой RestrictionRoute так:

const localStorageData = LocalStorage.getItem("root");    
export const RestrictionRoute = ({ component: Component, ...rest }) => {
      console.log(localStorageData);
      return (
        <Route
          {...rest}
          render={props =>
            localStorageData && localStorageData.token ? (
              <Redirect to="/" />
            ) : (
              <Component {...props} />
            )
          }
        />
      );
    };

Мое действие выхода из системы:

export function logOut() {
  return function(dispatch) {
    dispatch(changeLoadingStatusTo(true));
    LocalStorage.removeItem("root");
    dispatch(changeLoadingStatusTo(false));
    dispatch(push("/login"));
  };
}

Когда я нажимаюВыйти из системы в заголовке, мое действие выхода из системы инициировано, данные также удалены из локального хранилища, и в RestrictionRoute я снова проверяю localalstorage с помощью console.log(localStorageData), затем данные все еще существуют.Это меня смущает.

1 Ответ

0 голосов
/ 01 октября 2018

Попробуйте проверить непосредственно "LocalStorage.getItem (" root ") вместо вывода значения, хранящегося в переменной, поскольку localStorage - это копия данных, присутствующих там, где вы инициализировали свой класс.

...