有时Dan回推了
“当我看到
`.then(() => dispatch(...)).catch(...)`
在React项目中。如果组件在调度过程中抛出,您将陷入困境。”
并说解决方案是如此简单。只是不要 在 呈现UI的then() 之后 链接catch()。而是将错误处理程序作为第二个arg传递给then()。
有人可以解释为什么会这样。
在我的情况下,我正在进行ajax调用,因此我假设我将进入200范围内的任何内容作为服务器响应,并捕获到非200范围内的任何内容,即来自服务器的错误。我在这里想念什么吗?
所以Dan的意思是,在Async请求中,您希望成功调用会导致.then()被调用,并且由于您将dispatching an action在.then()其中依次更新redux存储和UI,因此如果UI更新中有任何错误进程,.catch()也将被调用,而您希望仅在服务器返回错误时才调用它
Async
.then()
dispatching an action
.catch()
解决的办法是像
.then( function (){ //handle success dispatch({...}) }, function () { //handle reject() and Error for Async request })