我需要触发相同的函数两次.一次是在某个redux状态改变后,一次是在redux动作完成后.目前我使用两个独立的侦听器,我想知道是否可以将predicate
和actionCreator
合并为一个侦听器.我试过了,但没能让它工作.
侦听器中间件文档供参考:https://redux-toolkit.js.org/api/createListenerMiddleware
目前的实施(工作正常):
export const addTemperatureAlertListener2 = (
startListening: AppStartListening
) => {
startListening({
predicate: (action, currentState, originalState) => {
return (
currentState.chart.yLimits.yMax !== originalState.chart.yLimits.yMax ||
currentState.chart.yLimits.yMin !== originalState.chart.yLimits.yMin ||
currentState.user.tConfig.alertHigherThreshold !==
originalState.user.tConfig.alertHigherThreshold
);
},
effect: (action, listenerApi) => {
temperatureAlertEffect(action, listenerApi);
},
});
};
export const addTemperatureAlertListener1 = (
startListening: AppStartListening
) => {
startListening({
actionCreator: createPatchRecord.fulfilled,
effect: (action, listenerApi) => {
temperatureAlertEffect(action, listenerApi);
},
});
};
我try 过但不起作用的事情:
export const addTemperatureAlertListener = (
startListening: AppStartListening
) => {
startListening({
actionCreator: createPatchRecord.fulfilled,
predicate: (action, currentState, originalState) => {
return (
currentState.chart.yLimits.yMax !== originalState.chart.yLimits.yMax ||
currentState.chart.yLimits.yMin !== originalState.chart.yLimits.yMin ||
currentState.user.tConfig.alertHigherThreshold !==
originalState.user.tConfig.alertHigherThreshold
);
},
effect: (action, listenerApi) => {
temperatureAlertEffect(action, listenerApi);
},
});
};