首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

搭建前端监控,如何采集异常数据?

比如说你的前端代码用了个未声明的变量,此时控制台会打印出红色错误,告诉你报错原因。或者是接口请求出错了,在网络面板内也能查到异常情况,是请求发送的异常,还是接口响应的异常。...前端项目,为了统一处理请求,比如 401 的跳转,或者全局错误提示,都会在全局写一个 axios 实例,这个实例添加拦截器,然后在其他页面中直接导入这个实例使用,比如: // 全局请求:src/request...如果有响应,首先获取状态码,根据状态码来判断什么时候需要收集异常。上面的判断方式简单粗暴,只要状态码大于 400 就视为一个异常,拿到响应数据,并执行上报逻辑。...要避免获取到接口可能返回的超长错误信息,多半是接口没处理,这样可能会导致写入数据失败,要提前与后台规定好。...在 React 中 和 Vue 一样,用户信息可以直接从状态管理里拿。因为 React 中没有全局获取当前旅游的快捷方式,所以页面信息我也会放在状态管理里面。

1.9K30
您找到你想要的搜索结果了吗?
是的
没有找到

实战 React 18 中的 Suspense

React 18 中,虽然仍然可以使用useEffect来完成一些事情,如使用 API 接口读取的数据填充状态,但实际上不应该将其用于此类目的。...如果你在应用程序中启用StrictMode,在开发模式下,你将发现使用useEffect会被调用两次,因为现在React会mount 组件、卸载它,然后再次 mount 它,以检查代码是否运行正常。...-> 请求已返回某些数据,我们获得了200 OK状态 rejected -> 出现了错误,获得了一个错误 Suspense使用的逻辑与ErrorBoundary完全相反,因此如果代码引发异常(因为它仍处于加载状态或者由于加载失败...现在,我们需要使用它包装接口请求库(例子中是axios),创建一个非常简单的函数: //fetchData.js import axios from 'axios'; import wrapPromise...但是现在,我可以看到它的好处,它非常容易处理加载状态,它抽象掉了一些代码,使其易于重用,并通过消除(好吧,至少在大多数情况下)组件本身的“useEffect”钩子简化了组件的代码,这在以前可是个让人头疼的事情

26610

react-query从拒绝到拥抱

react-query是一位数据获取专家,能够智能管理请求的一切内容,包括数据、状态、缓存,更新等,基于Hooks。...首先,先来看看过去我们是如何获取请求数据的: import { useEffect, useState } from "react"; import axios from "axios"; export...}颗星 ); } 复制代码 在这里使用useQuery,此刻这个请求拥有了自动获取数据,管理请求状态错误重试,窗口焦点自动获取数据,缓存等,它的第1个参数是一个唯一的key,名字有意义就好...最后它会返回一个结果,结果里面包含请求的数据,加载状态错误等,这样这个请求就把所有这些状态串联起来,而不是一堆散乱的状态,突然逻辑变得清晰了,你只需要根据这些状态处理页面,一切都简单了。...,{ enabled, //默认为true,表示自动请求,false的话则需要你手动 retry, //请求失败后,请求的重试次数,也可以为boolean,true无数次重试,false

2.6K31

如何更好的在 react 中使用 axios 的拦截器

但是 在 react 中,axios 并不是完全作为第三方工具,它的拦截器应该被定义服务,即 react 中的副作用代码。...此时我们就让 axiosreact 中活了过来,拦截器会实时把请求记录在 react 的上下文中,我们可以在 react 的任意地方调用日志上下文查看请求日志。...在默认页面 DefaultPage 组件中,我们可以进行一次错误请求请求会返回给我们 404 的状态码,现在我们需要在 axios 中进行拦截,当请求出现 404 时,跳转到 /404 页面。...大功告成,现在所有的 404 请求都会将页面重定向到 /404 页面,在 codesandbox 中错误请求会把错误信息展示到页面上,你需要手动关掉它查看最终效果,在这里有本文的详细代码。...假设记 foo 与 bar 两个请求,log 日志信息,默认为空数组 [],然后我们让 axios 的拦截器对日志数组进行 update([...oldLog, newLog]) 的压入操作,请求开始时写入请求的名字

2.4K30

axios

2️⃣ 处理错误麻烦,只有网络错误才会reject(promise的api),Http状态码404、500不会被标记为reject 3️⃣ 不支持取消一个请求以及查看请求的进度。...言归正传,如下是我们发起的一个get请求 import React, { useEffect } from "react"; import axios from 'axios' const Home:React.FC...axios.request({ }) 我们跳到index.d.ts文件,但是这并不是axios功能实现的源码,只是一个描述文件,index.js才是功能代码。...我们可以看到index.js中也并没有写具体代码,而是因我那个了lib下的axios 我们看一下 axios.js文件 可以看到我们的axios是通过createInstance创建的实例,在创建实例中...处理返回值 Promise 同步代码去写异步操作 async await关键字的使用 我们用的是react hooks,正常来说,在useEffect的函数中写async关键字是可以的, useEffect

4K10

代码质量第 4 层 - 健壮的代码

3金伟强.jpg 健壮性(Robustness) 是指程序在遇到规范以外的输入,错误和异常时,仍能正常运行。简单来说,健壮代码的适应性很强,不会因为一些异常,就导致程序崩溃。...不健壮的前端代码体现为: 接口返回异常或报错时,页面白屏。 用户做一些非常规操作时,页面白屏。 如何写出健壮的前端代码 ---- 要写出健壮的前端代码,就要处理规范以外的输入,错误和异常。...主动捕获运行时异常 用 try-catch 捕获同步代码的运行时错误。如果是异步代码,需要转化成 await 的写法。...if(err.response) { switch (err.response.status) { case 400: err.message = '请求错误(400)'; break...一些特殊的请求参数,导致接口的返回和预期值不同。 因此,我们要对接口返回格式做检查。

99950

代码质量第4层——健壮的代码

导语 | 腾讯腾讯云开发者社区精品内容栏目《云荐大咖》,特邀行业佼者,聚焦前沿技术的落地与理论实践,持续您解读云时代热点技术,探秘行业发展新机。...健壮性(Robustness) 是指程序在遇到规范以外的输入,错误和异常时,仍能正常运行。简单来说,健壮代码的适应性很强,不会因为一些异常,就导致程序崩溃。...不健壮的前端代码体现为: 接口返回异常或报错时,页面白屏。 用户做一些非常规操作时,页面白屏。 一、如何写出健壮的前端代码 要写出健壮的前端代码,就要处理规范以外的输入,错误和异常。...主动捕获运行时异常 用try-catch捕获同步代码的运行时错误。如果是异步代码,需要转化成await的写法。...// 报错处理 if(err.response) { switch (err.response.status) { case 400: err.message = '请求错误(400)

64520

代码质量第 4 层 - 健壮的代码

健壮性(Robustness) 是指程序在遇到规范以外的输入,错误和异常时,仍能正常运行。简单来说,健壮代码的适应性很强,不会因为一些异常,就导致程序崩溃。...不健壮的前端代码体现为: 接口返回异常或报错时,页面白屏。 用户做一些非常规操作时,页面白屏。 如何写出健壮的前端代码 要写出健壮的前端代码,就要处理规范以外的输入,错误和异常。...主动捕获运行时异常 用 try-catch 捕获同步代码的运行时错误。如果是异步代码,需要转化成 await 的写法。...if(err.response) { switch (err.response.status) { case 400: err.message = '请求错误(400)'; break...一些特殊的请求参数,导致接口的返回和预期值不同。 因此,我们要对接口返回格式做检查。

1.2K40

JavaScript 测试系列实战(三):使用 Mock 模拟模块并处理组件交互

在编写测试时,外部 API 可能由于各种原因而失败。我们希望我们的测试是可靠和独立的,而最常见的解决方案就是 Mock。...创建 axios 的 Mock 文件 axios.js,代码如下: // src/__mocks__/axios.js 'use strict'; module.exports = { get:...我们测试的第一件事是检查修改输入值是否更改了我们的状态: 我们修改 app/components/TodoList.test.js 如下: import React from 'react'; import...我们将测试状态是否随着我们的新任务而更新,其中比较有趣的是请求是异步的,我们继续修改代码如下: import React from 'react'; import { shallow } from 'enzyme...由于没有发起实际的 post 请求,我们的测试可以更可靠,更快。除此之外,我们还在整个 React 组件中模拟了事件。我们检查了它是否产生了预期的结果,例如组件的请求状态变化。

4.7K20

:第十五章 - 传统开发模式下的 axios 使用入门

PS:在后端模板项目上,我会添加对于 Swagger API 文档的支持,以及在后端程序中进行配置跨域请求,从而允许后端接口可以接受跨域请求的访问。...在 axios 中,我们发起一个 http 请求后,在 then 回掉方法中进行请求成功后的数据处理,在 catch 回掉方法中捕获请求失败的信息。...与 get 请求相似,使用 axios 发起 post 请求也是在 then 回掉方法中获取接口返回值,在 catch 回掉方法中捕获错误信息。...在每一个通过 axios 发起请求的 then 回掉方法中,我们都需要对获取到响应状态码进行判断,判断接口的调用是否成功。   ...例如,当调用接口不成功时,http 响应状态 400,同时返回错误信息,我们完全可以在拦截器中进行判断,当所有的接口响应状态 400 时,弹出后端返回的错误信息。

1.4K30

Vite2+React+TypeScript:搭建企业级轻量框架实践

更容易复用代码:每份useHook都能生成独立状态,更易于组件抽离,工程解耦等; 2....代码量更少:不需要定义繁琐的react component模板代码状态的读写不需要在每个生命钩子中穿插使用,使代码结构变得浅层、简单; hooks缺点 1....异步的代码的处理:在多个状态有前后依赖时,很难处理他们的读写顺序; 本项目所有单文件组件都是React v16.8+ 的hooks写法,其考虑点主要在于本项目主要以工程框架介绍为主,hook写法能更好帮助组件的定义和抽离...,返回1个axios实例,src/api/request.ts代码如下: import axios, { AxiosInstance, AxiosError, AxiosRequestConfig }...的实例供项目调用; 配置errorHandle句柄,处理错误; 当然在第2步,你可以添加额外的请求拦截,例如RSA加密,本地缓存策略等,当逻辑过多时,建议通过函数引入。

1.8K10

axios + ajax 面试题总结

前端最流行的 ajax 请求库, 2. react/vue 官方都推荐使用 axios 发 ajax 请求 axios 特点 1....]): 创建一个新的 axios(它没有下面的功能) axios.Cancel(): 用于创建取消请求错误对象 axios.CancelToken(): 用于创建取消请求的 token 对象 axios.isCancel...(): 是否是一个取消请求错误 axios.all(promises): 用于批量执行多个异步请求 axios.spread(): 用来指定接收所有成功数据的回调函数的方法 axios为什么既能在浏览器环境运行又能在服务器...== 4) { return } // 如果响应状态码在[200, 300)之间代表成功, 否则失败 const {status,...属性服务器的响应,表示一个串 reponseXML 属性 服务器的响应,表示XML status服务器的HTTP状态码,200对应ok 400对应not found 什么是XML XML是扩展标记语言

2K30

(译) 如何使用 React hooks 获取 api 接口数据

,组件加载的时候就要触发搜索,类似的查询和搜索状态易造成混淆,为什么不把实际的 URL 设置状态而不是搜索状态呢?...错误仅仅是一个 state ,一旦程序出现了 error state,则组件需要去渲染一些feedback 给用户。...为了能够提取自定义的请求 hook,除了属于输入框的 query 字段,别的包括 loading 加载器、错误处理函数都要包括在内。...总之,Reducer Hook确保状态管理的这一部分用自己的逻辑封装。此外,你永远不会遇到无效状态。例如,以前可能会意外地将isLoading和isError状态设置true。...我之前已经在这里写过关于这个问题的文章,它描述了如何防止在各种场景中未加载的组件中设置状态

28.4K20

Vite2+React+TypeScript:搭建企业级轻量框架实践

更容易复用代码:每份useHook都能生成独立状态,更易于组件抽离,工程解耦等;2....代码量更少:不需要定义繁琐的react component模板代码状态的读写不需要在每个生命钩子中穿插使用,使代码结构变得浅层、简单;hooks缺点 1....异步的代码的处理:在多个状态有前后依赖时,很难处理他们的读写顺序; 本项目所有单文件组件都是React v16.8+ 的hooks写法,其考虑点主要在于本项目主要以工程框架介绍为主,hook写法能更好帮助组件的定义和抽离...,返回1个axios实例,src/api/request.ts代码如下: import axios, { AxiosInstance, AxiosError, AxiosRequestConfig }...的实例供项目调用; 配置errorHandle句柄,处理错误; 当然在第2步,你可以添加额外的请求拦截,例如RSA加密,本地缓存策略等,当逻辑过多时,建议通过函数引入。

2K20

只知道ajax?你已经out了

不过随着前端技术的快速发展,react、vue框架的兴起,XHR对象都有了替代的方案(fetch)。另外如果为了要使用$.ajax方法,就导入整个jQuery这个大而全的库,也未免显得臃肿了些。...Promise API; (4)客户端支持防御CSRF (5)提供了一些并发请求的接口 使用npm安装:  npm install axios 示例--执行GET请求: //axios axios.get...,增加一些操作,比如说在对请求数据处理前,先检查下返回结果的状态。...对状态非200的结果,增加对应状态码的错误提示;在得到请求数据后,转换成需要的文本格式,或者json格式;另外,还可以对转换后的数据进行进一步的处理,比如请求的数据返回的是下划线类型的数据,可以处理成驼峰形式...; 更好更方便的写法; 需要注意的是: 兼容性; 当服务器返回400、500等错误码时并不会reject,只有网络错误等导致请求不能完成时,fetch才会被reject; fetch不支持abort,不支持超时控制

3.6K571
领券