嵌套的combineReducers产生一个未定义的值

时间:2017-08-24 12:22:57

标签: javascript redux

我正在尝试嵌套我的缩减器来提供这种结构:

state: {
  data: {
     dataSetOne: {
       items: [],
       filter: {
         query: "",
         includeInactive: false
       } 
     }
  }
}

我的文件结构是:

--reducers
  |__index.js
  |__data
    |__dataSetOne.js

index.js我导入dataSetOne.js并导出combineReducers({ dataSetOne })。这很好用。但是,在dataSetOne.js我似乎无法嵌套filter。我有什么:

import { combineReducers } from "redux";

function items (state = [], action) {
  ...
}

function query (state = "", action) {
  ...
}

function includeInactive (state = false, action) {
  ...
}

export default combineReducers({
  filter: combineReducers({
    includeInactive,
    query
  }),
  items
});

部分工作;我可以毫无问题地访问state.data.dataSetOne.items。但是,filterundefined。它甚至不存在于dataSetOne对象上。

我必须误解combineReducers如何运作,但我无法弄清楚为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

好的,我终于明白了!我使用redux-persistlocalforage一起使我的商店在刷新时保持不变。显然,这在某种程度上导致了这个问题。我清除了localforage数据库,一切都按预期工作。

我仍然不能完全理解combineReducers的工作原理,因为我可以将简单的function添加到我的Reducer中,而无需清除存储空间。

如果有人能够解释这种行为,我会将其标记为答案。