在redux中覆盖整个状态

Dim*_*zev 5 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)
  }
}
Run Code Online (Sandbox Code Playgroud)

reducers/global.js我有:

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

会发生什么事情state,奇怪(或不是:)足够的对象获得一个新的字段global,其中包含原始状态(而不是从文件中读取的那个),它甚至可以嵌套几个级别(所以我有stateat 的复制品state.global.global.)

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

一如既往,任何帮助将不胜感激.

Tam*_*dus 4

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

// reducers/index.js

export default function App (state = {}, action) {
  state = global(state, action);
  return {
    todos: todos(state.todos, action),
    ...
  };
}
Run Code Online (Sandbox Code Playgroud)

因此,指定的减速器global有机会立即替换整个状态对象。