【发布时间】:2019-12-28 22:05:12
【问题描述】:
编辑代码和解释以使事情更清楚:
我有一个 saga,它调用一个(非 saga)函数,向用户显示警报。
该函数 (Alerts.showInAppMessage) 接受一个 onTap 函数,当用户点击警报时将调用该函数。我无法将 yield put(showReceiveDialog(false)) 作为回调传递,因为它是一个生成器。但是,我设法通过保存对生成器的引用并在其上调用 .next() 来在用户点击后调用 yield put(showReceiveDialog(false)) 行(见下文)。
代码按预期顺序调用,但操作不会分派到商店。
let showInAppTransactionGenerator: IterableIterator<any>;
function* showInAppTransaction(alert: PushAlert) {
if (alert.body && alert.title){
yield Alerts.showInAppMessage(alert.title, alert.body, () => {
showInAppTransactionGenerator.next();
});
yield put(showReceiveDialog(false));
}
}
【问题讨论】:
-
showInAppTransaction怎么称呼?你确定它是通过 saga 中间件运行的吗?
标签: typescript react-native generator redux-saga