Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将localstorage setItem/getItem与react-redux一起使用_Javascript_Reactjs_Redux_React Redux_Local Storage - Fatal编程技术网

Javascript 将localstorage setItem/getItem与react-redux一起使用

Javascript 将localstorage setItem/getItem与react-redux一起使用,javascript,reactjs,redux,react-redux,local-storage,Javascript,Reactjs,Redux,React Redux,Local Storage,我是redux的新手,我似乎找不到一个解决我问题的答案。当我尝试插入localstorage时,如此解决方案所示-> 我得到一个错误,说我的状态是未定义的线程,我不知道为什么 这是沙盒->中的完整应用程序(我建议与chrome一起使用) 如果我尝试取消注释以下文件中的行 import React from "react"; import ReactDOM from "react-dom"; import { createStore } from "redux"; import { Provide

我是redux的新手,我似乎找不到一个解决我问题的答案。当我尝试插入localstorage时,如此解决方案所示->

我得到一个错误,说我的状态是未定义的线程,我不知道为什么

这是沙盒->中的完整应用程序(我建议与chrome一起使用)

如果我尝试取消注释以下文件中的行

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")
);
从“React”导入React;
从“react dom”导入react dom;
从“redux”导入{createStore};
从“react redux”导入{Provider};
导入“/Style.css”;
从“/App”导入应用程序;
从“/reducers”导入减速机;
让persistedState=localStorage.getItem(“reduxState”)
? parse(localStorage.getItem(“reduxState”))
: {};
const store=createStore(
减速器,
//持续状态,
窗口.\uuuuRedux\uDevTools\uuuu扩展&&window.\uuuuRedux\uDevTools\uuuu扩展()
);
//store.subscribe(()=>{
//setItem('reduxState',JSON.stringify(store.getState());
// });
ReactDOM.render(


有人能告诉我为什么会发生这种情况以及我做错了什么吗?

看起来问题出在persistentState上,否则条件设置的是空对象而不是未定义的对象(错误消息读取的是未定义的对象)。因此它将状态变为空对象,而不是将其单独保留

解决方案代码

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

看起来问题在于persistentState else条件设置了一个空对象而不是未定义的对象(错误消息正在读取该对象)。因此,它将状态变为空对象,而不是将其单独保留

解决方案代码

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

如果你至少能给出一些反馈,说明为什么这个问题被标记下来,那就太好了。我只能认为这与你正在使用的沙箱有关,因为我有一个应用程序设置,与store set/get local storage完全一样,它工作得非常好。很好,最初我在本地主机上运行的应用程序是Thread start:3000。这是github来克隆应用程序->…我只是把它扔到沙盒上,以便很容易地重新生成错误。好的,我现在将下拉并查看它。我发现了问题,请查看我的答案。事实上,我必须感谢我的一位朋友。如果你至少能给出一些反馈,说明问题被标记的原因,那就太好了。我只能这么认为了这与您正在使用的沙盒有关,因为我有一个应用程序设置,与store set/get local storage完全相同,它工作得非常好。最初我在本地主机上运行的应用程序是Thread start:3000。这是克隆应用程序的github->…我只是将其扔到沙盒上,以便轻松地重新生成错误。好的,我将下拉并重试现在看一看。我发现了这个问题,看看我的答案。事实上,我必须把这归功于我的一个朋友。我也会测试这个,我自己的项目我已经成功地使用了{}“。虽然我的创建存储函数有点复杂,所以这可能会影响结果。做得好,这100%有效,可能是最正确的方法。很好,我很高兴我们可以一起提供一个好的解决方案:)我也会测试这个,我自己的项目我已经成功地使用了“{}”。虽然我的创建存储函数有点复杂,因此可能会影响结果。做得好,这100%有效,可能是最正确的方法。太好了,我很高兴我们能一起提供一个好的解决方案:)