在redux

时间:2016-06-11 13:45:12

标签: javascript redux react-redux

这是关于redux的另一个新手问题。在我的应用程序中,我希望能够从文本文件加载状态,即能够完全重新初始化整个状态对象。所以我不想重置 state到初始值,但用新的替换。 (仅供参考,应用程序仅将数据存储在浏览器的 localStorage 中。此外,到目前为止,我已经按照http://redux.js.org/docs/introduction/index.html的精彩教程进行了操作)我尝试了几种方法,但都没有取得了成果。例如,在我的reducers/index.js我有:

export default function App (state = {}, action) {
  return {
    todos: todos(state.todos, action),
    ...
    global: global(state, action)
  }
}

reducers/global.js我有:

const global = (state = {}, action) => {
  switch(action.type) {
    case 'LOAD_DB_FROM_FILE':
      return action.fileContents;
    default:
      return state
  }
}

如果state对象奇怪(或不是:)足够的话,会得到一个名为global的新字段,其中包含原始状态(而不是从文件中读取的字段)和它甚至嵌套了几个级别(所以我在statestate.global.global.的副本)

我知道这种方法的黑客,甚至愿意在我的设置中接受一个根本的缺陷(由于我的无知),我仍然无法找到一个简单而明确的答案来解决我的问题。

一如既往,我们非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

我对redux知之甚少,但根据我对JavaScript的了解,我会说你需要这样的东西:

// reducers/index.js

export default function App (state = {}, action) {
  state = global(state, action);
  return {
    todos: todos(state.todos, action),
    ...
  };
}

因此名为global的reducer有可能立即替换整个状态对象。