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

如何优雅react-hook中进行网络请求

前言 Hook是React 16.8.0版本中新加入特性,同时React-Native0.59.0版本及以上进行了支持,使用hook可以不用class方式方式使用state,及类似的生命周期特性...,依赖项数据发生变化时候,hook就会重新执行,如果依赖项空,hook认为没有数据发生变更,组件更新时候就不会在此执行。...现在我们实现手动触发hook网络请求,修改代码如下,加一个按钮,点击按钮后获取以“redux”关键词列表数据 import React, {useState, useEffect} from 'react...,细心读者想必已经想到了,代码,useEffect hook第二个参数是空数组,所以没有触发effect运行,重新获取数据,我们添加一下依赖项"search"到数组,重新运行代码后,点击按钮就可看到我们数据已经正确更新了...错误处理是在网络请求是非常必要,添加一个error状态,使用try/catch来进行捕获处理。

8.9K73

Ajax(一)

图示如下: 注意: 浏览器,GET 请求比较特殊, 没有请求体。 浏览器,POST、PUT、PATCH、DELETE 请求请求体。...201 Created 资源服务器端已成功创建 304 Not Modified 资源客户端被缓存,响应体不包含任何资源内容 400 Bad Request 客户端请求方式、或请求参数有误导致请求失败...401 Unauthorized 客户端用户身份认证未通过,导致此次请求失败 404 Not Found 客户端请求资源地址错误,导致服务器无法找到资源 500 Internal Server...Error 服务器内部错误,导致本次请求失败 http 响应状态码 Vs 业务状态码 正确区分响应状态码和业务状态不同,是保证使用 Ajax 不迷茫必要前提。...(成功或失败) 业务状态码用来表示这次业务处理成功与否 ③ 通用 响应状态码是由 http 协议规定具有通用性。

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

详细自定义封装Axios请求库,你还不会二次封装吗?

和&符连接),而post大多是通过json传参。 qs是一个库。里面的stringify方法可以将一个json对象直接转为(以?和&符连接形式)。 开发,发送请求入参大多是一个对象。...那既然这是一个axios数据包,那我们就可以添加修改里面的数据。 我们看看它源码对应代码段,是TS写,是一个泛型对象,对象包含了一些设置参数。...如果有error对象,并且error对象有response参数时,我们此时就会确定这是请求状态错误。 为什么呢?因为error.responsestatus会返回浏览器爆出状态码。...那如果没有报状态码,那就说明非直接错误,那就可能是超时了,我们else中进一步处理。...状态码处理 那我们还是先看直接错误处理: 我们获取到状态码,根据不同状态码弹出不同错误提示,这里我们将错误提示文字报错到这个error

5.1K40

axios 二次封装-状态处理拦截器

上篇[axios 二次封装-拦截器队列, 这篇是基于拦截器队列实现状态处理拦截器, 某些情况下我们需要针对不同响应状态码,执行不同处理函数。例如: 410 权限校验, 500 服务器错误等。...除了常规http状态码,后台也可能定了一套内部请求码,例如: { code: 1, message:'OK' }。由此发现,如果希望通过定义一套处理模板代码,是无法满足实际业务需求。...这里将规则(rule)分为三类: 具体状态码, 例如 只针对 400 处理 状态码区间, 例如 200 ~ 300 区间内都视为成功 自定义状态处理,例如:{ code: 1, ... } 内部自定义状态...export const enum CUM_CODE { // 未知捕获 UNKNOWN = -1, // 请求失败,未获取到 status UNKNOWN_RES = -2 } /...status.install(http.candyPaper) // candyPaper http.use(status) 非请求错误or未定义状态规则 之前前置类型定义,定义了 CUM_CODE

79320

react-native-easy-app 详解与使用之(二) fetch

输出结果,格式化后如下: [response.png] success => true | false 请求成功或失败标识(默认以Http请求状态码: status >= 200 && status...message 默认情况下,请求成功时:code+url,失败时:则为错误信息错误信息+code+url,若开发者指定了特定解析方式,则由开发者制定。...error 接口若失败时,包含错误信息。 ticker 接口返回主要数据主体。...当然大家有没有发现,使用这些库方法时候,代码有提示呢?那就对了。...因为我为主要方法增加了dts描述文档,所以代码过程,如果不记得方法名参数直接通过代码自动提示来写就行了(自动提示webStorm上体验更好): 提示1.png 提示2.png 提示3.

2.6K10

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

axios ,我们发起一个 http 请求后, then 回掉方法中进行请求成功后数据处理, catch 回掉方法捕获请求失败信息。...这里 data 属性显示就是整个用户数据集合,实际使用,你需要与 http 响应状态码进行结合,考虑如果后端出现错误如何使前端知晓,从而相对友好通知用户。...与 get 请求相似,使用 axios 发起 post 请求也是 then 回掉方法获取接口返回值, catch 回掉方法捕获错误信息。...每一个通过 axios 发起请求 then 回掉方法,我们都需要对获取到响应状态码进行判断,判断接口调用是否成功。   ...例如,当调用接口不成功时,http 响应状态 400,同时返回错误信息,我们完全可以拦截器中进行判断,当所有的接口响应状态 400 时,弹出后端返回错误信息。

1.4K30

Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置

因为网络请求可能会出错,这些错误有的是代码错误导致,也有的是业务错误,不管是哪一种错误,都需要开发者去处理,而我们不可能在每一次发送请求时都去枚举各种错误情况。...请求封装 axios ,我们可以使用 axios 自带拦截器来实现对错误统一处理。 axios ,有请求拦截器,也有响应拦截器。...另外一个需要注意地方则是错误展示需要使用一种通用方式,而不可以和页面绑定(例如,登录失败,在用户名/密码输入框后面展示错误信息,不支持这种错误显示方式),这里推荐使用 ElementUI Massage...外面的 status 表示 HTTP 响应码,里边 status 是自定义 RespBean 返回数据•首先判断 HTTP 响应码 200 ,并且服务端返回 status 500 ,表示业务逻辑错误...msg) { //登录成功,页面跳转 }}) 注意 ,then msg 就是响应拦截器返回 msg ,这个 msg 如果没有值,表示请求失败失败已经拦截器中进行处理了),如果有值,

1.4K10

Vue 前后端交互基础

1.2 Promise 1.2.1 Promise 简介   ES 6 我们提供了 Promise 异步编程解决方案,比传统解决方案“回调函数和事件”更合理和更强大。...Promise 对象代表一个异步操作,有三种状态:pending(进行)、fulfilled(已成功)和 rejected(已失败)。...resolve 函数作用是,将 Promise 对象状态从“未完成”变为“成功”(即从 pending 变为 resolved),异步操作成功时调用,并将异步操作结果,作为参数传递出去;reject...函数作用是,将 Promise 对象状态从“未完成”变为“失败”(即从 pending 变为 rejected),异步操作失败时调用,并将异步操作报出错误,作为参数传递出去。   ...axios是Promise实现版本,符合最新ES规范,它本身具有以下特征:  ♞ 从浏览器创建 XMLHttpRequests  ♞ 从 node.js 创建 http 请求  ♞ 支持 Promise

2K50

vue3 + vite 进行axios请求封装及接口API统一管理

一、前言 这篇文章跟vite关系不大,下篇写环境变量配置时候就是vite相关了,今天这里主要讲一下vue3axios实战用法以及Api统一管理,手把手教学望各位在这里能碰擦出灵感火花,放飞五彩思绪...二、目录结构 src目录下新建api文件, api.ts 进行接口API统一管理 axios.ts 封装请求配置拦截器 status.ts 管理接口返回状态码 三、axios.ts 代码内逐行解释...: message = "请求错误(400)"; break; case 401: message = "未授权,...`; }; 复制代码 五、api.ts 引入axios导出request,按功能模块进行接口管理 import { request } from '....七、结束语 今天配置项目时在网上搜寻了众多vue3 axios相关文章,发现没有完全符合本人需求内容,所以最后集百家之长整合了这么一篇文章,望对各位有所帮助

13.7K61

浅学前端:Vue篇(一)

简写方式:可以把 v-on: 替换为 @ methods 方法 this 代表是 data 函数返回数据对象 4....简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境,不会放在生产环境。 生产环境:是指正式提供对外服务,一般会关掉错误报告,打开错误日志。...响应格式 名称 含义 data 响应体数据 ⭐️ status 状态码 ⭐️ headers 响应头 200 表示响应成功 400 请求数据不正确 age=abc 401 身份验证没通过 403 没有权限...(这个是身份验证通过了,但是你要访问更高权限资源时,会出现403) 404 资源不存在 405 不支持请求方式 post 500 服务器内部错误 注意: 这个status响应状态码与后端经常返回code...axiso对象,并且配置了请求拦截器和响应拦截器,这些代码具有一定通用性,我们没有必要在每个vue组件里都写一遍,所以像这种具有通用性代码,我们可以把他们单独抽到一个js文件里: /src/util/

21100

简单入门Fetch API

简单入门Fetch API 前言 Fetch API是使用 JavaScript请求资源优秀工具。虽然我们开发时可能是经常使用axios,但是实际上Fetch API也能做很多一样事。...基本用法 接口有需要可以到最后自取(express接口) 分派请求 只需要使用fetch()方法即可,传参获取资源URL。该方法返回一个Promise对象。...(使用方式和text()方法一样) 请求失败 请求失败时候还是会正常执行then方法里处理函数。(这里失败是指服务器返回了响应,但是不是成功请求。)...,而是执行catch()方法,因为这时候Promise不再是resolved状态,而是rejected状态。...: 200, data: { name: '赤蓝紫', age: 21 }, msg: '获取信息成功', }) }) // 响应状态400 app.get

99910

axios】使用json-server 搭建REST API

XHR ajax 封装 (简单版axios) 2.1 特点 函数返回值promise, 成功结果response, 失败结果error 能处理多种类型请求: GET/POST/PUT/...请求 query 参数 data: {}, // POST/PUT 请求请求体参数 } 复制代码 响应 json数据 自动解析 js对象/数组 2.2 编码实现 function axios...== 4) { return; } // 如果响应状态[200, 300)之间代表成功,否则失败 const {status, statusText...基本流程 配置 cancelToken 对象 缓存用于取消请求 cancel 函数 在后面特定时机调用 cancel 函数取消请求 错误回调判断如果 error 是 cancel, 做相应处理 2...=> { // 只用处理请求失败情况,取消请求错误不用处理 console.log('请求1失败了', error.message, error) } ) } function

2.8K00

ajax和fetch、axios优缺点以及比较

MDN上,讲到它跟jquery ajax区别,这也是fetch很奇怪地方: 当接收到一个代表错误 HTTP 状态码时,从 fetch()返回 Promise 不会被标记为 reject, 即使该...相反,它会将 Promise 状态标记为 resolve (但是会将 resolve 返回值 ok 属性设置 false ), 仅当网络故障时或请求被阻止时,才会标记为 reject。...优缺点: 符合关注分离,没有将输入、输出和用事件来跟踪状态混杂一个对象里 更好更方便写法 更加底层,提供API丰富(request, response) 脱离了XHR,是ES规范里新实现方式...它有以下几大特性: 可以node.js中使用 提供了并发请求接口 支持Promise API 简单使用 axios({ method: 'GET', url: url, }) .then...axios 是一个基于Promise 用于浏览器和 nodejs HTTP 客户端,它本身具有以下特征: 从浏览器创建 XMLHttpRequest 从 node.js 发出 http 请求 支持

9.2K20

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

比如说你前端代码用了个未声明变量,此时控制台会打印出红色错误,告诉你报错原因。或者是接口请求出错了,在网络面板内也能查到异常情况,是请求发送异常,还是接口响应异常。...前端项目,为了统一处理请求,比如 401 跳转,或者全局错误提示,都会在全局写一个 axios 实例,这个实例添加拦截器,然后在其他页面中直接导入这个实例使用,比如: // 全局请求:src/request...前端异常 上面我们介绍了 axios 拦截器如何捕获接口异常,这部分我们再介绍如何捕获前端异常。 前端代码捕获异常,最常用方式就是用 try..catch.....接口异常一般需要数据字段如下: code:http 状态码 url:接口请求地址 method:接口请求方法 params:接口请求参数 error:接口报错信息 这些字段都可以 error 参数获取... React 和 Vue 一样,用户信息可以直接从状态管理里拿。因为 React 没有全局获取当前旅游快捷方式,所以页面信息我也会放在状态管理里面。

1.9K30

一个基于vite构建vue3+pinia+ts+elementUI plus初始化开箱即用项目模版

运行项目不会默认打开浏览器,需要在package.json里面 ,vite 后面加上--open 安装vue全家桶 Pinia状态管理 由于 vuex 4 对 typescript 支持让人感到难过...getter 与 Vuex getter 、组件计算属性具有相同功能 actions 这里与 Vuex 有极大不同,Pinia 仅提供了一种方法来定义如何更改状态规则,放弃 mutations...可以包含有关如何更改状态逻辑(也就是 vuex mutations 作用) 可以 $patch 方法直接更改状态属性 VueRouter yarn add vue-router@4 src...switch (error.response.status) { case 400: error.message = '错误请求'...所有数据都具有响应式 轮询请求 自动处理错误重试 内置请求缓存 节流请求与防抖请求 聚焦页面时自动重新请求 ⚙️ 强大分页扩展以及加载更多扩展 完全使用 Typescript 编写,具有强大类型提示

61960

promise & axios & async_await 关于 Promise

有三种状态,pending(进行)、resolved(已完成)、rejected(已失败),特点是只有异步操作结果,可以决定当前是哪一种状态状态一旦改变,就无法再次改变状态; Promise常用方法...reject结果; 2.实例方法: (1).then:它作用是 Promise 实例添加状态改变时回调函数。...,后面我们说 【2】为什么出现Promise 业务上遇到一个请求要依赖前一个请求结果,如果多个层层回调函数嵌套叫做“回调地域”,代码不美观而且不易于维护,所以Promise出现了他链式调用可以解决这一个问题...()可以用来传递参数给then 内置reject函数作用是:将Promise对象状态从“未完成”变为“失败”(即从 pending 变为 rejected),异步操作失败时调用,并将异步操作报出错误...,哪有那么麻烦写法,只需要在末尾catch一下就可以了,因为链式写法错误处理具有“冒泡”特性,链式任何一个环节出问题,都会被catch到,同时某个环节后面的代码就不会执行了。

1.4K20

axios详解以及完整封装方法

方法,精简 post 请求方式 封装 Get 方法,精简 get 请求方式 请求成功,配置业务状态码 全局loading配置 VUEaxios封装 vue项目中,和后台交互获取数据这块,我们通常使用是...get函数返回一个promise对象,当axios请求成功时resolve服务器返回 值,请求失败时reject错误值。最后通过export抛出get函数。...,如果存在,则统一http请求header都加上token,不用每次请求都手动添加了 // 即使本地存在token,也有可能token是过期,所以响应拦截器要对返回状态进行判断 const...,所以每次请求头中携带token // 后台根据携带token判断用户登录情况,并返回给我们对应状态码 // 而后我们可以响应拦截器,根据状态码进行一些统一操作...状态app.vue控制着一个全局断网提示组件显示隐藏 // 关于断网组件刷新重新获取数据,会在断网组件说明 if (!

2.2K10
领券