Redux商店被覆盖而不是合并

时间:2018-04-21 12:52:35

标签: react-native redux react-redux redux-thunk

我正在使用Redux在React Native中编写应用程序。当我执行一个动作而不是更新商店时,它似乎取代了商店,只定义了我的减速器中明确规定的值。

我正在使用handleActions包中的redux-actions。减速器的示例如下所示;

import { handleActions } from 'redux-actions';

export default handleActions({
  DOCUMENT_GET_ALL_PENDING: state => ({
    isRefreshing: true,
  }),
  DOCUMENT_GET_ALL_FULFILLED: (state, action) => ({
    document: action.payload.documents,
    isRefreshing: false,
  }),
}, { isRefreshing: false, documents: [] });

例如,当它达到DOCUMENT_GET_ALL_PENDING时,文档数组将设置为undefined。 这是我的商店的创作看起来像; 我使用的是redux-promise-middlewareredux-devtools-extensionthunk中间件。

const store = createStore(
  rootReducer,
  defaultState,
  composeWithDevTools(applyMiddleware(promiseMiddleware(), thunk)),
);

欢迎提供任何帮助或建议。

1 个答案:

答案 0 :(得分:2)

您需要合并您的状态与上一个状态。现在你只是返回新的州值

有很多种方法可以使用es6 spread operator

DOCUMENT_GET_ALL_PENDING: state => ({
    ...state,
    isRefreshing: true,
  }),



DOCUMENT_GET_ALL_FULFILLED: (state, action) => ({
    ...state,
    document: action.payload.documents,
    isRefreshing: false,
  })