【发布时间】:2020-07-18 12:56:51
【问题描述】:
过去几周我一直在使用 redux,当我遇到这面墙时,我正在将它整合到我的项目中。用于渲染模态的非常常见的减速器,因此我可以在卸载它们之前对其进行动画处理。
const initialState = {
isModalOpen: false,
test: false
}
export default function(state = initialState, action) {
switch (action.type) {
case "modalInteraction":
return {
isModalOpen: action.payload
};
case "testModalInteraction":
return {
test: action.payload
};
default:
return state;
};
}
遗憾的是,尽管可以毫无问题地调用同一个 reducer 中的其他初始状态,但 test 属性仍然返回未定义。我什至删除了所有 testModalInteraction 调度,以防它以某种方式扰乱数据类型。我只是无法发现不断返回未定义的差异。
【问题讨论】:
-
在每个分支中,您都排除了其他属性。这可以通过非常常见的不可变模式来解决。模态交互分支可以试试
return { ...state, isModalOpen: action.payload }吗? -
我有,但它仍然返回未定义。
-
你需要在每个分支中使用spread,而不是默认的,以确保你不会删除属性。