【发布时间】:2018-08-23 10:41:43
【问题描述】:
假设我有一个带有按钮的模式,如果你点击它,它就会调度一个动作。我想知道发送的动作的结果:例如如果它成功了,我将关闭模态并关闭其他方式。 使用 redux-thunk 我的操作看起来像:
export const deleteObjects = () => {
return (dispatch, getState) => {
try {
...
dispatch(setObjects([]));
return true
} catch (e) {
return false
}
}
};
所以我可以在我的组件中使用结果。但是如何对 redux-sagas 做同样的事情呢?据我所知,您可以将 sagas 与观察者一起使用。 我能想到的一种解决方案是将回调函数传递给动作创建者并在 saga 内部调用它。像这样:
export const deleteObjects = (callback) => ({
type: DELETE_OBJECTS,
callback
});
export function* deleteObjectsAsync({callback}) {
try {
...
put(setObjects([]))
yield call(callback, true)
} catch (err) {
yield call(callback, false)
}
}
function* watchGetPlaces() {
yield takeEvery(DELETE_OBJECTS, deleteObjectsAsync)
}
这是一个有效的解决方案还是有更合适的方法?
【问题讨论】:
-
我想我不明白。如果您的模态受到外部状态的影响,例如标志 isOpen,那么当结果影响减速器时,您的 isOpen 将变为 false。模态将关闭。我是否符合您的需求?
-
@jstuartmilne 不完全是,问题不在于关闭模式,而在于调度操作的结果。我想从中获得一些反馈(就像在带有 thunk 的示例中一样)
标签: redux react-redux redux-saga