有时候Dan发了推文
"当我看到
时,我感到畏缩`.then(() => dispatch(...)).catch(...)`
在React项目中。如果组件在发送期间抛出,您将进入catch。"
并说解决方案很简单。只是不要在呈现UI的 then()之后链接catch()。而是将错误处理程序作为第二个arg传递给then()。
有人可以解释为什么会这样。
在我的情况下,我正在进行一个ajax调用,所以我假设我会进入内部,因为任何200作为服务器响应,并且内部捕获任何非200的内容,即来自服务器的错误。我在这里错过了什么吗?
答案 0 :(得分:3)
所以Dan的意思是,在Async
请求中,您希望成功调用会导致调用.then()
,因为您dispatching an action
.then()
反过来会更新redux存储,从而更新UI,所以如果UI更新过程中有任何错误,也会调用.catch()
,而你只能在服务器返回错误时调用它
解决方案是像
一样处理它.then(
function (){
//handle success
dispatch({...})
},
function () {
//handle reject() and Error for Async request
})