Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在redux中覆盖整个状态_Javascript_Redux_React Redux - Fatal编程技术网

Javascript 在redux中覆盖整个状态

Javascript 在redux中覆盖整个状态,javascript,redux,react-redux,Javascript,Redux,React Redux,这是另一个关于redux的新手问题。在我的应用程序中,我希望能够从文本文件加载状态,即能够完全重新初始化整个状态对象。因此,我不想将状态重置为初始值,而是将其替换为新值。(仅供参考,该应用程序仅将数据存储在浏览器的localStorage中。此外,到目前为止,我还遵循了来自的精彩教程)我尝试了几种方法,但都没有取得任何效果。例如,在我的reducers/index.js中,我有: export default function App (state = {}, action) { retur

这是另一个关于
redux
的新手问题。在我的应用程序中,我希望能够从文本文件加载状态,即能够完全重新初始化整个状态对象。因此,我不想将
状态
重置为初始值,而是将其替换为新值。(仅供参考,该应用程序仅将数据存储在浏览器的localStorage中。此外,到目前为止,我还遵循了来自的精彩教程)我尝试了几种方法,但都没有取得任何效果。例如,在我的
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
  }
}
发生的情况是,
状态
对象,奇怪的是(或不是:))得到了一个名为
global
的新字段,它包含原始状态(而不是从文件中读取的状态),它甚至嵌套了几个级别(因此我在
state.global.global.

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


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

我对redux知之甚少,但根据我对JavaScript的了解,我想说您需要这样的帮助:

// reducers/index.js

export default function App (state = {}, action) {
  state = global(state, action);
  return {
    todos: todos(state.todos, action),
    ...
  };
}
因此名为
global
的reducer有机会一次替换整个state对象