Redux 为什么';这个恶作剧不更新商店吗?
我创建了一个thunk,它可以发送一系列不同的动作:Redux 为什么';这个恶作剧不更新商店吗?,redux,redux-thunk,Redux,Redux Thunk,我创建了一个thunk,它可以发送一系列不同的动作: export function resetEverything() { return function (dispatch) { return Promise.all([ dispatch(updateCurrentColor('blue')), dispatch(updateCurrentTypeChoice('hot')), dispatch(updateData('fish', {})),
export function resetEverything() {
return function (dispatch) {
return Promise.all([
dispatch(updateCurrentColor('blue')),
dispatch(updateCurrentTypeChoice('hot')),
dispatch(updateData('fish', {})),
dispatch(updateData('giraffes', {})),
dispatch(updateData('elephants', {})),
dispatch(updateData('zebras', {})),
]).then(() => console.log('resetEverything called'));
};
}
这些操作也在应用程序中单独使用。单独称为,它们工作良好;存储将使用有效负载进行更新
然而,在这个批处理操作中,所有动作都被调度,控制台显示“resetEverything called”,甚至当我查看Chrome中的Redux扩展时,每个动作都以相同的结构(当然是不同的负载)被调度。但是…当我查看差异时,它会显示(状态相等)
,而且可以肯定的是,检查State>树显示存储密钥根本没有更新
为什么这不起作用?为什么会忽略已发送的操作
减速器:
import update from 'immutability-helper';
function reducer(state = initialState, action = {}) {
switch (action.type) {
case UPDATE_CURRENT_COLOR:
return update(state, { currentColor: { $set: action.payload } });
case UPDATE_CURRENT_TYPE_CHOICE:
return update(state, { currentTypeChoice: { $set: action.payload } });
case UPDATE_DATA:
return update(state, { data: { [action.payload.property]: { $merge: action.payload.dataObject } } });
default: return state;
}
}
我们能看看你们的减速机吗?@AlexandreGUIDET我刚把它加在上面。(调用时的单个操作似乎可以很好地更新存储的状态)@zahabba您在测试时是否在reducer中记录了任何内容?您可能可以在redux开发工具中看到正在触发的操作,但它们不知何故没有到达减速器。@b我确实尝试过;单个/组件操作按其应该的方式启动(使用“清空”有效负载),但状态将保持不变。我们可以看看您的还原器吗?@AlexandreGUIDET我刚刚在上面添加了它。(调用时的单个操作似乎可以很好地更新存储的状态)@zahabba您在测试时是否在reducer中记录了任何内容?您可能可以在redux开发工具中看到正在触发的操作,但它们不知何故没有到达减速器。@b我确实尝试过;单个/组件操作按其应该的方式启动(使用“emptyish”有效负载),但状态将保持不变。