我几个星期以来一直在努力理解为什么当我试图在我的根源传奇中运行yield cancel
效果时,我的cancel
会抛出错误:
export function* loginData() {
const watcher = yield fork(getLoginWatcher);
yield take(LOCATION_CHANGE);
yield cancel(watcher);
}
控制台错误:
utils.js:202 uncaught at getLogin Generator is already running"
如果我删除取消,我的传奇不会被取消。这就像在同一时间工作和抛出错误一样。
有这个错误真的让我烦恼,看起来我的申请有问题。
执行环境:
是否有人了解redux-saga/effects
proc如何处理cancel
效果, 已经在运行错误。< / p>
答案 0 :(得分:0)
我认为造成这种情况的原因可能不是取消说明中所述的效果。我试图使用react-boilerplate独立完成一个类似的登录过程,并且发现许多其他示例都使用了比最新样板代码更旧的方法,因此一直在解决这些问题,并且我也得到了这个确切的错误,来自调用堆栈的消息似乎来自取消效果。 但是,在阅读此处https://github.com/react-boilerplate/react-boilerplate/issues/1281所发布的相同问题时,有人建议这实际上是导致错误的原因,因为在不使用
的情况下调用了'forwardTo'收益率调用(forwardTo,参数)
一旦我将sagas中的调用更改为此,错误就消失了。我认为这是解决问题的方法。其他人似乎在github问题页面上达成了共识。