当传奇在第一次加载后被调用一个动作时,它的工作是正确的,但当同一个动作在传奇上执行两次时,动作被发送,但传奇从来没有收到它。
useEffect(() => {
if (show) {
updateTitle(message.title);
if (!status || status === Status.Initiate) {
createStatus();
}
}
return () => {
if (!show) {
cleanup();
}
};
}, [status]);
下面的过程解决了我的问题。
原来,在运行时,如果某个saga执行失败,该saga就不会再被调用,也就是说,如果对该saga产生了任何操作,都会被忽略。
为了检查saga是否在运行时失败,你可以将saga的主体包裹在try catch块中。
function* failingSaga() {
try {
// saga-body
} catch(e) {
console.log(e);
}
}
这将有助于了解异常是什么。