小编典典

在React Redux应用程序中处理异步错误

reactjs

有时Dan回推了

“当我看到

`.then(() => dispatch(...)).catch(...)`

在React项目中。如果组件在调度过程中抛出,您将陷入困境。”

并说解决方案是如此简单。只是不要 呈现UI的then() 之后 链接catch()。而是将错误处理程序作为第二个arg传递给then()。

有人可以解释为什么会这样。

在我的情况下,我正在进行ajax调用,因此我假设我将进入200范围内的任何内容作为服务器响应,并捕获到非200范围内的任何内容,即来自服务器的错误。我在这里想念什么吗?


阅读 265

收藏
2020-07-22

共1个答案

小编典典

所以Dan的意思是,在Async请求中,您希望成功调用会导致.then()被调用,并且由于您将dispatching an action.then()其中依次更新redux存储和UI,因此如果UI更新中有任何错误进程,.catch()也将被调用,而您希望仅在服务器返回错误时才调用它

解决的办法是像

.then(
function (){
    //handle success
    dispatch({...})
},
function () {
    //handle reject() and Error for Async request

})
2020-07-22