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

【React】1935- 来看看 SWR 如何用 React Hook 实现优雅请求

数据过期 请求方法写在很顶层的组件,将请求数据一层层传递给依赖的自组件使用,导致 组件 props 冗长 以上几种场景各自都有特殊的处理方式,例如为 axios 增加类似防抖的重复请求处理,计算用户无请求发送时间以确保数据更新.../oiloil 这个接口的数据,当我们在组件中使用 hook 的时候就直接发送了请求,如果我们后面需要重复请求可以直接调用 reload 方法,而且通过 !...hook ,实际使用的过程中还会出现 hook 嵌套的情况,例如我需要获取用户的列表,再根据某个用户的 id 去获取相应的用户详情。...而修改后每次打开弹窗都会随着 Modal 组件的挂载和卸载重新执行 Modal 组件内的 useSwr 方法,造成重复请求,如果你的 hook 还是嵌套使用的,那么重复请求的数量就更大了。...这里需要注意一下,在 React 官方文档中提到了 hooks-rules[4] : 不要在循环,条件或嵌套函数中调用 Hook, 确保总是在你的 React 函数的最顶层以及任何 return 之前调用他们

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

    【初级】个人分享Vue前端开发教程笔记

    基础get请求 axios是一个基于promise的HTTP库,可以用在浏览器和node.js中。...特点: 从浏览器中创建XMLHttpRequests 从node.js创建http请求 支持Promise api 拦截请求和响应 转换请求数据和响应数据 取消请求 自动转换JSON数据 客户端支持防御...); axios api: 可以通过向axios传递相关配置来创建请求 // axios(config) axios({ method: 'post', url: '/user/123', data...inserted,被绑定元素插入父节点时调用,(仅保证父节点存在,但不一定已被插入文档中)。 update,所在组件的VNode更新时调用,但是可能发生在其子VNode更新之前。...parent是vue`的一个实例属性,它表示的是当前组件的父实例 假如父组件中有一个方法为sayDa,在子组件中可以直接使用this.$parent.sayDa去调用父组件的方法。

    4.9K20

    vue组件高级(上)

    组件之间的数据共享 3.1组件之间的关系 在项目开发中,组件之间的关系分为如下3种: 父子关系 兄弟关系 后代关系 3.2 父子组件之间的数据共享 父子组件之间的数据共享又分为: 父 -> 子共享数据...此时组件之间的嵌套关系比较复杂,可以使用provide和inject实现后代关系组件之间的数据共享。...Vue3.x中全局配置axios 在实际项目开发中,几乎每个组件都会用到axios发起数据请求,此时会遇到如下两个问题: 每个组件中都需要导入axios(代码臃肿) 每次发请求都需要填写完整的请求路径(...不利于后期的维护) 配置方式 在main.js入口文件中,通过 app.config.globalProperties全局挂载axios //为axios配置请求的根路径 axios.defaults.baseURL...$http = axios 在组件中发起axios请求: this.$http.get('/users')

    1.3K10

    react笔记

    2.React组件中包含一系列勾子函数(生命周期回调函数), 会在特定的时刻调用。 3.我们在定义组件时,会在特定的生命周期回调函数中,做特定的工作。...API 1)GET请求 axios.get('/user?...2)注册路由: router.get(path, function(req, res)) 3)工作过程:当node接收到一个请求时, 根据请求路径找到匹配的路由, 调用路由中的函数来处理请求, 返回响应数据..., 当产生了新的state时, 自动调用 7.3 redux的核心API 7.3.1 createstore() 作用:创建包含指定reducer的store对象 7.3.2 store对象 1.作用:...(一般数据和函数) 3)不使用任何 Redux 的 API 4)一般保存在components文件夹下 2.容器组件 1)负责管理数据和业务逻辑,不负责UI的呈现 2)使用 Redux 的 API

    1.4K20

    建站四部曲之前端显示篇(React+上线)

    ,致敬我的2018 本篇的重点在于:用前两篇的数据使用React搭建一个简单网站 本篇总结的技术点: React的组件封装、React实现简单的懒加载、React中的网络请求、搜索功能 React...添-POST请求:http://192.168.43.60:8089/api/android/note 添-PUT请求:http://192.168.43.60:8089/api/android...[2]如果对MySQL不太熟悉的童鞋,可以看一下我的这篇:Spring..." } } ---- 2.组件属性和行为 //组件属性 this.props.itemInfo:上层组件传递来的数据...Page页的抽取与数据的流入.png ---- 1.数据的获取(以Android界面为例) 1.1:添加依赖 这里使用axios发送请求 npm i axios 1.2:获取数据方法简单封装:DataFetcher.js...组件接收的props就像Android自定义控件中的自定义属性,并且React灵活很多 css的布局就像Android中的布局,相比而言,css强大很多 ES6的语法加持,更让React写起来符合

    3.4K30

    React: hooks 该怎么优雅的获取数据

    当然你需要先了解一下 react hooks 的新特性 github.com/reactjs/rfc… reactjs.org/docs/hooks-… 使用 hook 获取数据 这里有一篇讲解在 react...因为当我们在获取数据后存储数据到 state 中的时候,我们的组件会随之更新,然后 effect 会再次运行一次。然后我们会又获取一次 data。...我们的目的是只在组件加载完成的时候获取数据 import React, { useState, useEffect } from 'react'; import axios from 'axios'...[],当我们的组件更新的时候回去观测 effect 的值是否有变化,这里添加空 [] ,是为了防止 hooks 再一次运行。...而不是直接写在 form 的 onchange 方法中 const doGet = event => { setUrl(`http://hn.algolia.com/api/v1/search

    2.5K30

    前端组件设计原则

    我正在研究一个从 API 获取一些数据并将其呈现给表的组件,其中排序,过滤等功能都是后端完成的,因此前端需要做的就是 watch 所有搜索参数,并在其变化时触发 API 调用。...这样并不是预料之中的行为,而且产生的代码也不够直观。 解决方案是改变页码这个行为的事件处理函数(不是观察者,用户更改页面的实际处理函数)应该更改页面值并触发 API 调用请求数据。...除此之外的任何事情,例如 API 调用,数值的格式化(例如货币或时间)或跨组件复用的数据,都可以移动外部的 js 文件中。让我们看一下 Vue 中的一个简单示例,使用嵌套列表组件。...Vuex 存储并使用 axios 发送请求。...如果我们是从 API 的响应中获取数据,但是这个数据跟我们期望的数据结构或者类型不同的时候要怎么办?或者我们期望单击嵌套项时有不同的行为?

    1K20

    前端组件设计原则

    我正在研究一个从 API 获取一些数据并将其呈现给表的组件,其中排序,过滤等功能都是后端完成的,因此前端需要做的就是 watch 所有搜索参数,并在其变化时触发 API 调用。...这样并不是预料之中的行为,而且产生的代码也不够直观。 解决方案是改变页码这个行为的事件处理函数(不是观察者,用户更改页面的实际处理函数)应该更改页面值并触发 API 调用请求数据。...除此之外的任何事情,例如 API 调用,数值的格式化(例如货币或时间)或跨组件复用的数据,都可以移动外部的 js 文件中。让我们看一下 Vue 中的一个简单示例,使用嵌套列表组件。...Vuex 存储并使用 axios 发送请求。...如果我们是从 API 的响应中获取数据,但是这个数据跟我们期望的数据结构或者类型不同的时候要怎么办?或者我们期望单击嵌套项时有不同的行为?

    1.7K20

    【Web技术】314- 前端组件设计原则

    我正在研究一个从 API 获取一些数据并将其呈现给表的组件,其中排序,过滤等功能都是后端完成的,因此前端需要做的就是 watch 所有搜索参数,并在其变化时触发 API 调用。...这样并不是预料之中的行为,而且产生的代码也不够直观。 解决方案是改变页码这个行为的事件处理函数(不是观察者,用户更改页面的实际处理函数)应该更改页面值并触发 API 调用请求数据。...除此之外的任何事情,例如 API 调用,数值的格式化(例如货币或时间)或跨组件复用的数据,都可以移动外部的 js 文件中。让我们看一下 Vue 中的一个简单示例,使用嵌套列表组件。...Vuex 存储并使用 axios 发送请求。...如果我们是从 API 的响应中获取数据,但是这个数据跟我们期望的数据结构或者类型不同的时候要怎么办?或者我们期望单击嵌套项时有不同的行为?

    1.3K40

    前端组件设计原则

    我正在研究一个从 API 获取一些数据并将其呈现给表的组件,其中排序,过滤等功能都是后端完成的,因此前端需要做的就是 watch 所有搜索参数,并在其变化时触发 API 调用。...这样并不是预料之中的行为,而且产生的代码也不够直观。 解决方案是改变页码这个行为的事件处理函数(不是观察者,用户更改页面的实际处理函数)应该更改页面值并触发 API 调用请求数据。...除此之外的任何事情,例如 API 调用,数值的格式化(例如货币或时间)或跨组件复用的数据,都可以移动外部的 js 文件中。让我们看一下 Vue 中的一个简单示例,使用嵌套列表组件。...Vuex 存储并使用 axios 发送请求。...如果我们是从 API 的响应中获取数据,但是这个数据跟我们期望的数据结构或者类型不同的时候要怎么办?或者我们期望单击嵌套项时有不同的行为?

    2.3K30

    Vue 相关学习笔记(二)

    --1、menu-item 在 APP中嵌套着 故 menu-item 为 子组件 --> ERROR: # 当组件渲染的时候,这个 元素将会被替换为“组件标签中嵌套的内容”。...实现组件更新数据功能 上 将输入框中的默认数据动态渲染出来 输入框失去焦点的时候 更改商品的数量 子组件中不推荐操作数据 把这些数据传递给父组件 让父组件处理这些数据 父组件中接收子组件传递过来的数据并处理...这个任务可称为主线程 异步模式可以一起执行多个任务 JS中常见的异步调用 定时任何 ajax 事件函数 promise 主要解决异步深层嵌套的问题 promise 提供了简洁的API 使得异步操作更加容易...页面中可以加载出来最新的信息 # 调用接口发送ajax 请求 var ret = await axios.get('books/' + id);

    5.5K20

    HarmonyOS 开发实践 —— 基于RN框架实现高性能瀑布流页面

    数据量不固定的问题通常采用批量请求数据的方式从服务器中获取数据的方式来解决。...优化手段针对图片的缓存处理,社区中提供了更优方案FastImage,在HarmonyOS侧FastImage基于C-API调用HarmonyOS的图片能力,在iOS基于 SDWebImage ,在Android...将 Native fontMetrics API 暴露给JS,JS 就具有了提前计算高度的能力。但是每次调用 fontMetrics,都需要Native 与 js 进行一次异步通讯。...网络框架处理请求安装&导入// 安装npm install axios// 导入import axios from 'axios';异步请求axios使用 Promise 处理异步请求,这使得代码更简洁和易于阅读...,这种方法通过延迟加载未在可视区内的组件,有效地减少了初始渲染时间和内存占用。

    20110

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

    在之前的两篇教程中,我们学会了如何去测试最简单的 React 组件。在实际开发中,我们的组件经常需要从外部 API 获取数据,并且组件的交互逻辑也往往更复杂。...在这篇教程中,我们将学习如何测试更复杂的组件,包括用 Mock 去编写涉及外部 API 的测试,以及通过 Enzyme 来轻松模拟组件交互 初次尝试 Jest Mock 我们的应用程序通常需要从外部的...编写 axios 模块的 mock 文件 Jest 支持对整个模块进行 Mock,使得组件不会调用原始的模块,而是调用我们预设的 Mock 模块。...React 组件的交互 在上面迭代的 TodoList 中,我们使用了 axios.post。...由于没有发起实际的 post 请求,我们的测试可以更可靠,更快。除此之外,我们还在整个 React 组件中模拟了事件。我们检查了它是否产生了预期的结果,例如组件的请求或状态变化。

    4.8K20
    领券