Использование localstorage setItem / getItem с реагировать на редукцию - PullRequest
0 голосов
/ 05 декабря 2018

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

Я получаю сообщение об ошибке, что мое состояние не определено позже впоток, и я не уверен, почему.

Вот полное приложение в песочнице -> https://codesandbox.io/s/5yn3kqqlkk (я рекомендую использовать с хромом)

Если я пытаюсь раскомментироватьстроки в следующем файле ...

import React from "react";
import ReactDOM from "react-dom";
import { createStore } from "redux";
import { Provider } from "react-redux";
import "./Style.css";
import App from "./App";
import reducer from "./reducers";

let persistedState = localStorage.getItem("reduxState")
  ? JSON.parse(localStorage.getItem("reduxState"))
  : {};

const store = createStore(
  reducer,
  // persistedState,
  window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);

// store.subscribe(() => {
//   localStorage.setItem('reduxState', JSON.stringify(store.getState()));
// });

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById("root")
);

Приложение аварийно завершает работу со свойством в состоянии, считываемом как неопределенное -> https://i.imgur.com/h0kcpBD.png

Может кто-нибудь сказать мне, почему это происходита что я делаю не так?

1 Ответ

0 голосов
/ 05 декабря 2018

Похоже, проблема заключалась в том, что условие persistentState иначе устанавливало пустой объект вместо неопределенного (именно это и читалось в сообщении об ошибке).Таким образом, оно изменяло состояние как пустой объект, а не оставляло его в покое.

код решения ...

let persistedState = localStorage.getItem("reduxState")
  ? JSON.parse(localStorage.getItem("reduxState"))
  : undefined;
...