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对象