这是关于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
的新字段,其中包含原始状态(而不是从文件中读取的字段)和它甚至嵌套了几个级别(所以我在state
有state.global.global.
的副本)
我知道这种方法的黑客,甚至愿意在我的设置中接受一个根本的缺陷(由于我的无知),我仍然无法找到一个简单而明确的答案来解决我的问题。
一如既往,我们非常感谢任何帮助。
答案 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有可能立即替换整个状态对象。