useEffect实现数据请求刷新的几种方法

2023-11-11

请求数据入参变化的情况下重新请求数据的情景下useEffect的几种写法:

1.函数在useEffect里面:

const query = ''
  useEffect(() => {
    function fetchData () {
      return 'https://hn.algolia.com/api/v1/search?query=' + query
    }
    fetchData()
  }, [query])

2.函数放在函数式组件外面:

const planCode = ''
function fetchData (planCode) {
    return 'https://hn.algolia.com/api/v1/search?query=' + planCode
  }

useEffect(() => {
    fetchData()
  }, [planCode])

函数不依赖函数式组件里面的变量时,就可以将它抽出函数组件之外,这样就不用将此函数放在依赖数组里。

为什么将函数提取出来,必须要放在依赖数组里?
在这里插入图片描述

在这里插入图片描述
3.函数放在函数式组件外面、放在useEffect外面(useRef的写法)

function getGoodsPoolInfo () {
    apis.getGoodsPoolInfo(conditions).then(res => {
      ...
  }

  const GoodsPoolRef = useRef(null)

  GoodsPoolRef.current = getGoodsPoolInfo

  useEffect(
    () => {
      GoodsPoolRef.current()
    }, [conditions]
  )

用ref跳过数据抓取:
将GoodsPoolRef指向一个对象,这个对象自始至终都不会变,但是该对象的current属性是变化的,所以useEffect不会要求将其写在依赖数组里面。完美的解决了问题。

4.函数放在函数式组件外面、放在useEffect外面(useCallback的写法)

const callback = useCallback(
    () => {
      apis.getGoodsPoolInfo(conditions).then(res => {
        ...
    },
    [conditions]
  )

  useEffect(
    () => {
      callback()
    }, [callback]
  )

将要放在useeffect外面的函数放在useCallback中,useCallback返回的函数可以当作普通变量作为useEffect的依赖,这样一来,函数不会随着render的变化而变化,而是随着conditions的变化而变化,conditions发生变化后,才会返回一个新的函数引用,触发 useEffect 的依赖变化,并激活其重新执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

useEffect实现数据请求刷新的几种方法 的相关文章

  • React + Umi + Dva + Antd 简述 及创建项目过程简述

    React 你的第一个组件 React React是前端三大主流框架之一 你可以在React里传递多种类型的参数 如声明代码 帮助你渲染出UI 也可以是静态的HTML DOM元素 也可以传递动态变量 甚至是可交互的应用组件 安装react框
  • Antd DatePicker 设置默认值报clone.weekday is not a function

    代码 dayjs版本1 11 7 页面 当点击页面日期框会报clone weekday is not a function 解决方法 在jsx文件中添加如下js import dayjs from dayjs import advanced
  • react项目中使用react-dnd实现列表的拖拽排序

    现在有一个新需求就是需要对一个列表 实现拖拽排序的功能 要实现的效果如下图 可以通过 react dnd 或者 react beautiful dnd 两种方式实现 今天先讲下使用react dnd是如何实现的 github地址 https
  • 【前端】react-markdown配置解析

    文章目录 react markdown基本配置 同步预览配置 MdEditorComponent js reducer js initBlogState js action types js sync actions js store js
  • React的State Hook用法详解

    一 State Hook是啥 State Hook 就是指 useState 这个特殊函数 让你不用编写class 就可以使用state特性 换言之就是让 函数组件 拥有 state 特性 对数据进行动态更新 二 class中的state
  • 在校学生如何白嫖黑群辉虚拟机和内网穿透,实现海量资源的公网访问?(小白专用)

    文章目录 前言 本教程解决的问题是 按照本教程方法操作后 达到的效果是 前排提醒 1 搭建群辉虚拟机 1 1 下载黑群辉文件 vmvare虚拟机安装包 1 2 安装VMware虚拟机 1 3 解压黑 群辉虚拟机文件 1 4 虚拟机初始化 1
  • styled-components 的用法

    用于给标签或组件添加样式 给标签或组件添加样式 import styled from styled components styled button 给button标签添加样式 const Button styled button back
  • Ionic3开发教程 - 开发(2)

    Ionic3开发系列教程Ionic3开发教程 环境准备 1 Ionic3开发教程 开发 2 Ionic3开发教程 发布Android版本 3 Ionic3开发教程 发布IOS版本 4 Ionic3开发教程 更新 5 本文中介绍的Ionic3
  • Ant Design Pro 从零到一教程

    说在最前面的话 可是能全网唯一适合小白的antd教程 因为我找了接近一个周的教程 无论是视频 博客等等都没有比较完整的教程 所以才说这可能是唯一全网适合小白教程 文章末有相关学习链接 适用人群 喜欢看文字或者代码学习的人 学习的人掌握基本的
  • React路由懒加载的实现

    React lazy 通过引入lazy Suspense两个方法实现路由懒加载 首先 我们需要在组件中引入lazy Suspense这两个方法 然后我们需要通过Suspense组件 包裹着注册路由 import React Componen
  • React中使用if else 条件判断

    在react中用jsx渲染dom的时候经常会遇到if条件判断 然而在jsx中竟是不允许if条件判断的 以下有几种判断方式 可以根据自己的应用场景 挑选适合的 方案一 class HelloMessage extends React Comp
  • React的超详细讲解

    React React的重点 webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency
  • Umi+Dva初印象<基础应用,结构,流转逻辑>

    目录 前言 知识储备 generator函数 Dva初识 实际交互 函数式组件 class组件 前言 项目初始为umi脚手架进行初始化 lt 初始化过程 http t csdn cn cuTaY gt 工程中加载了umi自带的antd ui
  • useEffect详情用法

    1 为什么要使用useEffect 想必大家都是用过vue吧 在vue框架所写的项目中 我们通过在与后端进行数据交互的过程中 通常都是会在生命周期中进行数据的请求 然后将数据返回给页面进行渲染 在React中我们也是这样 但是在函数式组件中
  • React官方文档--Lifting State Up

    Lifting State Up 如果 几个组件需要同时影响并且修改同一个数据 我们建议将这个共享状态进行提升 给他们最近的共同祖先 在这个部分 我们将要创建一个温度计算器来判断水会不会在给定温度下沸腾 我们将从一个叫做BoilingVer
  • 【react】回调函数形式的ref

    回调函数有3个特点 是我定义的函数 我没有调用这个函数 在我没有调用的情况下这个函数自己执行了 ref绑定一个箭头函数作为回调函数 可以输出以下这段看下 ref绑定的箭头函数是会自己执行的 class Demo extends React
  • hooks实践总结

    何为hooks 在React中hook是指不编写 class 的情况下使用 state 以及其他的 React 特性 而Vue3也推出了具有相同功能的组合式API 如果你用过Vue3就会知道在 setup 中你应该避免使用 this 因为h
  • 【React】 4课 react初识组件

    首先我们如1课创建一个文件夹在文件夹中安装react环境需要的配置文件 npm init y npm i babel standalone D npm i react react dom D 安装配置文件教程链接 https blog cs
  • 黑马React:基础拓展

    黑马React D10 基础拓展 Date December 18 2023 useReducer 基础使用 作用 让 React 管理多个 相对关联 的状态数据 补充 和useState的作用类似 用来管理相对复杂的状态数据 特点 use
  • React安装依赖 node_modules中有下载依赖项但package.json文件中没有依赖

    React安装依赖 node modules中有下载依赖项但package json文件中没有依赖 直接在下载依赖项后 加 S 就可以解决 随机 id 生成器 uuid nanoid npm install nanoid S S save

随机推荐

  • K8s知识点梳理

    1 k8s是一个编排容器的工具 其实也是管理应用的全生命周期的一个工具 从创建应用 应用的部署 应用提供服务 扩容缩容应用 应用更新 都非常的方便 而且可以做到故障自愈 例如一个服务器 挂了 可以自动将这个服务器上的服务调度到另一个主机上进
  • Java之对象比较

    目录 1 同一性比较 2 相等性比较 3 需要比较对象之间的大小关系 3 1 Comparable接口比较 两个对象 3 1 1 已经实现了Comparable接口的类 例如下面的String类 3 1 2 自己定义类并实现Comparab
  • Apollo原理

    Apollo原理 https github com ctripcorp apollo wiki Apollo E9 85 8D E7 BD AE E4 B8 AD E5 BF 83 E8 AE BE E8 AE A1 提交就是 提交给客户端
  • QT中UDPSocket丢包问题

    1 配置和编程 下位机向上位机发送UDP数据包 由于UDP小包不能写太大 每个小包也就1kB左右 下位机周期性地发送数据 每个周期发送数百个udp包 并且是使用while死循环来发送的 上位机使用QUdpSocket类接收UDP数据 采用信
  • 利用eclipse比较两个文件的代码差异或者一个文件不同版本之间的异同

    1 比较两个文件之间的代码差异 选中两个文件 右键选择Compare With 再选择Each Other即可 2 比较一个文件不同版本之间的差异 选中文件 右键选择team 选择显示资源历史记录 然后从历史记录中选择需要比较的版本 两个文
  • moment.js的使用方法和日期格式化介绍

    文章目录 1 node js 2 使用方法 日期格式化介绍 fromNow 相对时间 startOf 时间开头 endOf 时间末尾 subtract 时间减 add 时间加 获取星期几 moment 被设计为在浏览器和 Node js 中
  • Java多线程程序设计初步

    Java多线程程序设计初步 在Java语言产生前 传统的程序设计语言的程序同一时刻只能单任务操作 效率非常低 例如程序往往在接收数据输入时发生阻塞 只有等到程序获得数据后才能继续运行 随着Internet的迅猛发展 这种状况越来越不能让人们
  • 1.pytorch lightning之验证与测试

    训练 训练部分已在 入门篇 介绍 验证集和测试集中评估模型 通常将数据集分为三部分 train val test val集在训练时评估模型的泛化性 选择其中表现最好的checkpoint test集只在模型训练完成后使用 用于评估模型的真实
  • 封装微信小程序隐私信息授权

    隐私 代码 html modal 组件再后面封装有提供
  • 深入理解Java国际化

    假设我们正在开发一个支持多国语言的Web应用程序 要求系统能够根据客户端的系统的语言类型返回对应的界面 英文的操作系统返回英文界面 而中文的操作系统则返回中文界面 这便是典型的i18n国际化问题 对于有国际化要求的应用系统 我们不能简单地采
  • [深度学习] 名词解释--正则化

    正则化 花书的定义 凡是可以减少泛化误差 过拟合 而不是减少训练误差的方法 都叫正则化方法 目的 拟合训练数据 防止模型过拟合 通常使用L2正则化 用各种方法规范模型参数的方法 什么是神经网络的过拟合 在最小化损失函数的前提下 最优的一组w
  • proteus中继电器怎么找_(踩坑记录)——数电仿真proteus/ewb

    我不管 从今天开始我要隐姓埋名的在知乎记录各种学习和生活上遇到的坎了 因为实在不知道记录在哪里方便查找 为什么要记录呢 还不是我脑子不好 彻底卸载proteus 正常卸载 删除注册表 win R输入以下 数电仿真实验 1 一 逻辑门 74L
  • 冷月手撕408之操作系统(5)-进程概述

    操作系统的进程概述主要是介绍了进程的概念 进程的组成 进程实体 进程的特征 进程的五状态模型 进程控制 其中重点掌握PCB 五状态模型及其状态转换 主要的重点冷月做出了标识 知识点如下图 pdf版或xmind源文件请关注公众号 学长冷月 回
  • 【算法】排序(sort排序函数和冒泡、选择、插入、快速排序)

    记录目前学到的4种排序 sort函数排序 冒泡排序 选择排序 插入排序 sort函数排序 1 对数组进行排序 要加函数头 include
  • ChatGPT:我的生活工作“解忧公主”

    1 概述 在这个充满活力与挑战的时代 我们的生活和工作总是充满了各种问题 幸运的是 有了 ChatGPT 这位 解忧公主 我们能轻松应对这些问题 高效地度过每一天 本文将分享 ChatGPT 如何成为我们生活工作中的万能钥匙 我们将从以下几
  • python3的面向对象

    python的面向对象也很强大 支持多继承 php和java都是单继承 但都可以实现其他接口 self 类似java的this test py usr bin python3 基类 class Base 父类属性 name age 60 定
  • Windows下fopen,fclose

    Fopen fclose 在头文件 include
  • KiCad使用笔记(05)-PCB绘制

    文章目录 绘图过程 导入网表 绘制PCB边框 摆放元件 添加导线 交互式布线 添加铺铜 放置过孔 检测PCB 整理丝印 生成钻孔文件 生成光绘文件 相关视频教程 绘图过程 导入网表 绘制PCB边框 PCB边框放置在Edge Cuts层 可以
  • Java课题笔记~ SpringBoot简介

    1 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗 SpringBoot是由Pivotal团队提供的全新框架 其设计目的是用来简化Spring应用的初始搭建以及开发过程 原生开发SpringMVC程序过程 1 1
  • useEffect实现数据请求刷新的几种方法

    请求数据入参变化的情况下重新请求数据的情景下useEffect的几种写法 1 函数在useEffect里面 const query useEffect gt function fetchData return https hn algoli