localStorage 获取未定义状态
localStorage Getting Undefined State
TL;DR: 状态更新正确(从 Redux DevTools 查看)但不会持续存在于本地存储中,因为它表示状态为“undefined
”(附上截图)。
解释:
我是 Redux 的新手。我正在尝试将我的状态保存到本地存储。当我从 Redux DevTools 和 console.log()
语句查看时,状态正在正确更新。但是,当我检查应用程序的本地存储时,它显示状态未定义。
我想做什么:
每当我按下其中一个组件中的“添加”按钮(然后我想将其保存到浏览器的本地存储)时,我就会向我的购物车添加一项服务。
以下是 Redux DevTools 和浏览器本地存储的截图:
请帮我找到并解决问题。
这是我的根组件 App.js
的代码,其中包含我的 Redux 存储和本地存储功能:
import Servicesdata from "./ServicesData";
import { createStore } from "redux";
import reducer from "./Reducer";
import { Provider } from "react-redux";
// Local Storage Functions:
function saveToLocalStorage(state) {
try {
const serializedState = JSON.stringify(state);
localStorage.setItem("state", serializedState);
} catch (e) {
console.log(e);
}
}
function loadFromLocalStorage() {
try {
const serializedState = localStorage.getItem("state");
if (serializedState === null) return undefined;
return JSON.parse(serializedState);
} catch (e) {
console.log(e);
return undefined;
}
}
//initial store
const initialStore = {
services: Servicesdata,
cart: [],
bill: 0,
// quantity: 0,
total_items: 0, //saves total items in the cart
};
const persistedState = loadFromLocalStorage();
//store
const store = createStore(
reducer,
persistedState,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
store.subscribe(() => saveToLocalStorage(store.getState));
const App = () => {
return (
<Provider store={store}>
//more code
</Provider>
);
};
export default App;
在我的 Reducer.js
中,我正在调度 INCREASE
操作以将新商品添加到购物车。
将 store.getState
更改为 store.getState()
。
TL;DR: 状态更新正确(从 Redux DevTools 查看)但不会持续存在于本地存储中,因为它表示状态为“undefined
”(附上截图)。
解释:
我是 Redux 的新手。我正在尝试将我的状态保存到本地存储。当我从 Redux DevTools 和 console.log()
语句查看时,状态正在正确更新。但是,当我检查应用程序的本地存储时,它显示状态未定义。
我想做什么: 每当我按下其中一个组件中的“添加”按钮(然后我想将其保存到浏览器的本地存储)时,我就会向我的购物车添加一项服务。
以下是 Redux DevTools 和浏览器本地存储的截图:
请帮我找到并解决问题。
这是我的根组件 App.js
的代码,其中包含我的 Redux 存储和本地存储功能:
import Servicesdata from "./ServicesData";
import { createStore } from "redux";
import reducer from "./Reducer";
import { Provider } from "react-redux";
// Local Storage Functions:
function saveToLocalStorage(state) {
try {
const serializedState = JSON.stringify(state);
localStorage.setItem("state", serializedState);
} catch (e) {
console.log(e);
}
}
function loadFromLocalStorage() {
try {
const serializedState = localStorage.getItem("state");
if (serializedState === null) return undefined;
return JSON.parse(serializedState);
} catch (e) {
console.log(e);
return undefined;
}
}
//initial store
const initialStore = {
services: Servicesdata,
cart: [],
bill: 0,
// quantity: 0,
total_items: 0, //saves total items in the cart
};
const persistedState = loadFromLocalStorage();
//store
const store = createStore(
reducer,
persistedState,
window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()
);
store.subscribe(() => saveToLocalStorage(store.getState));
const App = () => {
return (
<Provider store={store}>
//more code
</Provider>
);
};
export default App;
在我的 Reducer.js
中,我正在调度 INCREASE
操作以将新商品添加到购物车。
将 store.getState
更改为 store.getState()
。