javascript - Redux 订阅并撰写

标签 javascript reactjs redux

我有一个相当具体的实现问题。我正在开发一个项目,他们已经配置了 Redux Store 并添加了项目所需的中间件。我试图将我的数据保存到本地存储,但通常我会经历,当我创建一个商店时,我添加订阅,然后添加以下代码。

const saveToLocalStorage = state => {
  try {
    const serializedState = JSON.stringify(state);
    localStorage.setItem('state', serializedState);
  } catch (error) {
    console.log(error);
  }
};

const loadFromLocalStorage = () => {
  try {
    const serializedState = localStorage.getItem('state');
    if (serializedState === null) return undefined;
    return JSON.parse(serializedState);
  } catch (error) {
    console.log(error);
    return undefined;
  }
};

const persistedState = loadFromLocalStorage();

const store = createStore(
  rootReducer,
  persistedState,
  window.devToolsExtension ? window.devToolsExtension() : f => f
)

store.subscribe(() => saveToLocalStorage(store.getState()));

我正在尝试实现类似于以下内容的内容,但也添加它并尽可能少地更改以下代码,这些代码来自配置项目时的样板文件。

const createStoreWithMiddleware = compose(
  applyMiddleware(thunk),
  window.devToolsExtension ? window.devToolsExtension() : f => f
)(createStore);

export default function configureStore(initialState) {
  return createStoreWithMiddleware(rootReducer, initialState);
}

我不太熟悉撰写和添加额外的中间件,因此我们将不胜感激。

最佳答案

如果您尝试使用中间件创建商店,您可以这样做

const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;

const configureStore = () => {
    const store = createStore(
        combineReducers({
            library: libraryReducer,
            filters: filterReducer,
            auth: authReducer
        }),
        composeEnhancer(applyMiddleware(thunk))
    );
    return store;
}

export default configureStore;

Store 是指您的网络应用程序某些默认状态的初始空状态。如果您想用数据填充您的存储,那么您应该使用操作和化简器来存储所有数据,因为它们的存在只是为了这个目的。

关于javascript - Redux 订阅并撰写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51390051/

相关文章:

javascript - 无法使用 Xcode 7.3 将 React Native 应用程序上传到 iTunes Connect

javascript - 当 redux 更改商店 Prop 时运行我的方法。响应式JS

reactjs - 为什么路由的可选参数旁边有括号

javascript - 购物车实现 React-Redux

javascript - 在 Jquery 库中选择一个特定的标签

javascript - 视差滚动背景图像自动放大和缩小

javascript - setState 不执行回调

javascript - 用于等待数据库变量更改然后在之后执行某些操作的 meteor 技术/模式

javascript - 如何更改元素的文本方向?

javascript - 如何在上一个结束后发起调度