首页 > 解决方案 > 第二次调度的相同动作不会调用 saga,而在第一次调度时它会正确调用

问题描述

在第一次加载后调用 saga 时,它可以正常工作。但是当在 saga 上执行两次相同的操作时,该操作被调度,但 saga 从未收到它。

useEffect(() => {
		if (show) {
			updateTitle(message.title);
			if (!status || status === Status.Initiate) {
				createStatus();
			}
		}
		return () => {
			if (!show) {
				cleanup();
			}
		};

	}, [status]);

标签: reactjstypescriptreact-reduxreact-hooksredux-saga

解决方案


以下过程解决了我的问题。

事实证明,在运行时,如果某个 saga 无法执行,则该 saga 将不再被调用,这意味着如果为该 saga 生成任何操作,它就会被忽略。

要检查 saga 在运行时是否失败,您可以将 saga 的主体包装在 try catch 块中。

function* failingSaga() {
  try {
  
    // saga-body
  } catch(e) {
    console.log(e);
  }
}

这将有助于了解异常是什么。


推荐阅读