首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux Subscribe with compose

Redux Subscribe with compose
EN

Stack Overflow用户
提问于 2018-07-18 04:54:51
回答 1查看 85关注 0票数 0

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

代码语言:javascript
复制
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()));

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

代码语言:javascript
复制
const createStoreWithMiddleware = compose(
  applyMiddleware(thunk),
  window.devToolsExtension ? window.devToolsExtension() : f => f
)(createStore);

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

我对组合和添加额外的中间件不是很熟悉,所以任何帮助都会非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-07-18 04:58:47

如果你想用中间件创建一个商店,你可以这样做

代码语言:javascript
复制
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表示web应用程序的某个默认状态的初始空状态。如果你想用数据填充你的存储,那么你应该使用actions和reducer来存储你所有的数据,因为它们的存在只是为了这个目的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51390051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档