React中使用Axios进行错误处理的异步/等待方法
P粉186904731
P粉186904731 2023-08-26 10:41:39
0
1
523
<p>我正在使用Axios来获取一些数据:</p> <pre class="brush:php;toolbar:false;">export const getProducts = async () => { try { const { data } = await axios.get(`/api/products`) return data } catch (err) { console.log(err) return err } }</pre> <p>一切都很好,但是我需要在try块内捕获http错误。例如,当与服务器的连接丢失时,Axios会返回一个AxiosError对象:</p> <blockquote> <ol> <li>AxiosError {message: '请求失败,状态代码 404', name: 'AxiosError', code: 'ERR_BAD_REQUEST', config: {…}, request: XMLHttpRequest,...}</li> <li>代码:“ERR_BAD_REQUEST”</li> <li>配置:{过渡:{…},适配器:数组(2),transformRequest:数组(1),transformResponse:数组(1),超时:0, …}</li> <li>消息:“请求失败,状态代码为 404”</li> <li>名称:“AxiosError”</li> <li>请求:XMLHttpRequest {onreadystatechange:null,readyState:4,超时:0,withCredentials:false,上传:XMLHttpRequestUpload, …}</li> <li>响应:{数据:'nnn<元字符...re>无法获取 /api/productsnnn',状态:404,statusText:'不 找到',标头:AxiosHeaders,配置:{...},...}</li> <li>堆栈:“AxiosError:请求失败,状态代码为 404n 解决时 (webpack-internal:///./node_modules/axios/lib/core/settle.js:24:12)n 在 XMLHttpRequest.onloadend (webpack-internal:///./node_modules/axios/lib/adapters/xhr.js:117:66)"</li> <li>[[原型]]:错误</li> </ol> </blockquote> <p>问题是:如果有错误,我想渲染一个显示“获取数据时发生错误”的div。如果没有错误,按照通常的方式渲染一个产品表格。</p> <p>我这样调用我的函数:</p> <pre class="brush:php;toolbar:false;">const productsArr = await getProducts()</pre> <p>我如何判断productsArr是一个有效的产品数组还是一个AxiosError?</p>
P粉186904731
P粉186904731

全部回复(1)
P粉066224086

您可以在官方文档中查看如何处理错误:https://axios-http.com/docs/handling_errors

如果没有收到响应,则可以查看错误(从axios文档中复制)

else if (error.request) {
      // 发送请求但未收到响应
      // `error.request` 在浏览器中是XMLHttpRequest的实例,在node.js中是http.ClientRequest的实例
      console.log(error.request);

您可以使用错误处理边界包装您的组件。您可以创建一个组件,它将包装发生错误的其他组件,并使用componentDidCatch生命周期方法,这与在try-catch中使用catch{}相同。https://reactjs.org/docs/react-component.html#componentdidcatch。或者使用一个流行的npm包https://www.npmjs.com/package/react-error-boundary

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板