不久前丹发推文
“当我看到
`.then(() => dispatch(...)).catch(...)`
在 React 项目中。如果组件在调度期间抛出异常,你就会陷入困境。”
并说解决方案是如此简单。只是不要链接 catch()afterthen() 渲染 UI。相反,将错误处理程序作为第二个参数传递给 then()。
有人可以解释为什么会出现这种情况吗?
就我而言,我正在进行 ajax 调用,因此我假设我将进入内部,获取任何 200 作为服务器响应的内容,并捕获任何非 200 的内容,即来自服务器的错误。我在这里错过了什么吗?
所以丹的意思是Async
请求,您期望成功调用会导致.then()
被召唤,既然你是dispatching an action
in .then()
这反过来会更新 redux 存储,从而更新 UI,所以如果 UI 更新过程中出现任何错误,.catch()
也会被调用,而您希望它仅在服务器返回错误时被调用
解决方案是像这样处理它
.then(
function (){
//handle success
dispatch({...})
},
function () {
//handle reject() and Error for Async request
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)