【发布时间】:2020-03-29 14:27:12
【问题描述】:
我的 redux 商店有一个奇怪的问题: 我可以在我的应用程序中设置它,但我想在注销时将其重置为组件的 initialState。 在这个特定的组件上似乎没有任何工作。在其他组件中,root reducer 方法有效。这是一个比较大的项目,但我很确定,我的组件逻辑和工作组件是一样的。
reducer 看起来像这样:
const initialState = {
myList: [
{
key: 'ListKey1',
formats: [],
selectedFormat: '',
printer: {},
},
{
key: 'ListKey2',
active: false,
formats: [],
selectedFormat: '',
printer: {},
},
{
key: 'ListKey3',
active: false,
formats: [],
selectedFormat: '',
printer: {},
},
],
};
export default function myReducer(state = initialState, action) {
switch (action.type) {
...
...
default:
return state;
}
}
我尝试了rootReducer方法:
const rootReducer = (state, action) => {
if (action.type === 'LOGOUT') {
return appReducer(undefined, action);
}
return appReducer(state, action);
};
这似乎并没有触及初始状态。
我还尝试了“老式”的方式,通过在减速器中捕获注销案例。 这也无济于事。
...
case 'LOGOUT':
return initialState;
default:
return state;
...
当我用空数组替换 initialState 时,它会工作/覆盖状态。
...
case 'LOGOUT':
return [];
default:
return state;
...
但这当然不适合我的应用
也许这里的任何人都可以提供帮助,你是我最后的选择,谷歌搜索没有多大帮助。 干杯! :D
更新:
这是我的mapStateToProps
const mapStateToProps = (state) => ({
selectedList: state.settings.myList,
});
【问题讨论】:
-
除非你绝对需要 Redux,否则我建议只使用 React hooks 和全局存储,比如 Reactn。更少的代码和更少的类。
-
很遗憾,这不取决于我,而且我们也在使用 sagas,所以它可能会限制选择。
-
简洁的代码不是建议不要使用 Redux imo。我不会轻易传播这个建议。
标签: javascript reactjs redux jsx