React Hooks + Umi Hooks + Ant Design Pro -------- 实时请求数据,监测到数据改变就局部刷新表格

2023-11-04

1.前期准备

必要条件1:首先得有一个高级表格,没有自己就去官方文档找一个
必要条件2:高级表格获取数据源方式为request
必要条件3:有umi的包 能用useRequest(setTimeout应该也可以但操作应该不一样)
原因:我用的这个

2.实现

1.定义两个状态

params用来装局部刷新的请求数据
compareData用来装最近两次请求回来的数据

 const [params, setParams] = useState<any>({});
 const [compareData, setCompareData] = useState<any[]>([]);

```javascript
request={async (params, sorter, filter) => {
          setParams(params)
          ......
### 2.创建轮询函数,在其onSuccess函数里将本次请求得到的数据放入

```java
compareData中  const { data, run, cancel } = useRequest(queryTasks, {
    manual: true,
    pollingInterval: 10000,
    pollingWhenHidden: false,
    onSuccess: (result, params) => {
      if (compareData.length < 2) {
        setCompareData([...compareData, result]);
       }
    },
  });

3.当compareData的长度为2时,通过对比,判断是否不同(此处为数组对象所以转字符串来对比)

    ......
    onSuccess: (result, params) => {
      if (compareData.length < 2) {
        setCompareData([...compareData, result]);
      } else if (compareData.length === 2) {
        if (JSON.stringify(compareData[0]) !== JSON.stringify(compareData[1])) {
          console.log(compareData)
        }
      }
    },
  });

4.对比后,如果发生改变就局部刷新表格

  ......
    onSuccess: (result, params) => {
      if (compareData.length < 2) {
        setCompareData([...compareData, result]);
      } else if (compareData.length === 2) {
        if (JSON.stringify(compareData[0]) !== JSON.stringify(compareData[1])) {
          console.log(compareData);
          if (actionRef.current) {
            actionRef.current.reload();
          }
        }
      }
    },
  });

5.对比后,删掉第一项,保证下一次对比能正常进行。

    ......
    onSuccess: (result, params) => {
      if (compareData.length < 2) {
        setCompareData([...compareData, result]);
      } else if (compareData.length === 2) {
        if (JSON.stringify(compareData[0]) !== JSON.stringify(compareData[1])) {
          console.log(compareData);
          if (actionRef.current) {
            actionRef.current.reload();
          }
        }
        setCompareData([compareData[1]]);
      }
    },
  });

6.设置当请求条件变更后执行本函数(第一次进入也会执行)

当请求条件变更后即换页,查询等情况,可达到局部对比局部刷新效果
注意需要先停止当前轮询再开始新的

  useEffect(() => {
    cancel(); //先停止当前轮询
    setCompareData([]);
    run(params);
  }, [params]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Hooks + Umi Hooks + Ant Design Pro -------- 实时请求数据,监测到数据改变就局部刷新表格 的相关文章

  • React仿写网易云音乐项目

    文章目录 一 项目功能说明 二 最终效果 三 文件目录结构说明 四 项目技术栈 五 核心技术 1 配置项目别名 craco craco 2 使用reset css进行 css 重置 3 使用CSS Sprites 精灵图 4 使用 memo
  • React学习之扩展浅比较(三十四)

    注意 这玩意也已经被React PureComponent的功能取代了 这里依旧是提一下 主要是React v15的版本中的react with addons js 这些玩意还存在 哎 害人呐 引入 import shallowCompar
  • react的条件渲染(或者组件渲染)五种方式 --开发基础总结

    1 使用if的方式判断是否渲染某个组件 function UserGreeting props return h1 Welcome back h1 function GuestGreeting props return h1 Please
  • React的State Hook用法详解

    一 State Hook是啥 State Hook 就是指 useState 这个特殊函数 让你不用编写class 就可以使用state特性 换言之就是让 函数组件 拥有 state 特性 对数据进行动态更新 二 class中的state
  • ant design pro v5 配置拦截器,header

    ant design pro v5 配置拦截器 header 1 资料文档 https umijs org zh CN plugins plugin request requestinterceptors 2 编写app tsx 我这里是自
  • 如何在 Ubuntu 20.04 上使用 React 前端设置 Ruby on Rails v7 项目

    作者选择了电子前沿基金会接受捐赠作为为捐款而写程序 介绍 红宝石 on Rails是一个流行的服务器端 Web 应用程序框架 它为当今网络上存在的许多流行应用程序提供支持 例如GitHub Basecamp 声云 Airbnb and Tw
  • styled-components 的用法

    用于给标签或组件添加样式 给标签或组件添加样式 import styled from styled components styled button 给button标签添加样式 const Button styled button back
  • 配置使用Eslint的时候 版本错误 "eslint": "5.6.0" a different version of eslint was detected higher up in the tr

    1 如果你也遇到下面的问题 你可以 按照命令行提示的那样 下面这四步完成的一般就可以了 但是不排除你在运行的时候忘记下载某些依赖 1 删除 package lock json 不是package json 你可以选择 yarn lock 或
  • react基础--组件通讯:props基础、子传父、父传子、兄弟组件通讯、context跨级组件、props进阶

    目录 一 props基础 1 1 概述 1 2 函数组件通讯 1 2 1 基本用法 1 2 1 对象数据传递 1 3 类组件通讯 1 4 props的特点 二 组件通讯三种方式 2 1 父传子 2 2 子传父 2 3 兄弟组件通讯 三 co
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • 【Ant Design】Form.Item创建自定义表单

    一 概述 Antd是一个非常强大的UI组件库 里面的Form表单组件也基本能满足我们大多数场景 但是也有需要自定义表单的场景 Vue2里我们使用v model 结合子组件的model属性 来实现自定义组件的双向绑定 Vue3里我们使用v m
  • React页面设计初体验

    1 定制路由 export default login path login name login component layouts BlankLayout routes path login component Login Index
  • React的超详细讲解

    React React的重点 webpack webpack 是一个现代 JavaScript 应用程序的静态模块打包器 module bundler 当 webpack 处理应用程序时 它会递归地构建一个依赖关系图 dependency
  • 【Umi+Antd+Ts实战】新增商品弹框组件【V1.0】

    新增商品弹框组件 先看效果 1 点击 符号 弹出新增商品组件 路由配置可以参考下面博客 https blog csdn net weixin 43352901 article details 108536112 2 新增商品弹框内容 文件目
  • react 上传文件(多选)功能入的坑

    1 这里报错是因为onChange的this指向不对 解决方法在constructor中写 this onChange this onChange bind this 或者在绑定事件的时候写 onChange this onChange b
  • React核心概念:状态提升

    上一节 表单 下一节 组合vs继承 React核心概念 状态提升 引言 添加第二个输入框 编写转换函数 状态提升 经验总结 引言 很多情况下我们使用的多个组件需要对同一个数据做出对应的反应 在这里我们推荐把这个共享的状态提升到距离这些组件最
  • ant design pro 代码学习(七) ----- 组件封装(登录模块)

    以登录模块为例 对ant design pro的组件封装进行相关分析 登录模块包含基础组件的封装 组件按模块划分 同类组件通过配置文件生成 跨层级组件直接数据通信等 相对来说还是具有一定的代表性 1 登录模块流程图 首先 全局了解一下登录模
  • hooks实践总结

    何为hooks 在React中hook是指不编写 class 的情况下使用 state 以及其他的 React 特性 而Vue3也推出了具有相同功能的组合式API 如果你用过Vue3就会知道在 setup 中你应该避免使用 this 因为h
  • error Missing “key“ prop for element in array react/jsx-key

    react遇到一个奇怪的问题 error Missing key prop for element in array react jsx key 检查了jsx中使用map的 都定义了key div otherList map item an
  • 黑马React:基础拓展

    黑马React D10 基础拓展 Date December 18 2023 useReducer 基础使用 作用 让 React 管理多个 相对关联 的状态数据 补充 和useState的作用类似 用来管理相对复杂的状态数据 特点 use

随机推荐

  • 【LPOJ】C 北京你好 dp

    做了下上学期期中考试题 乍一看以为是贪心 wa了贼多发后发现是dp 注意 一个乘客下车后如果该站点没有人上车 则结束 说明最多的人数都要首尾相连 感谢小王同学指点迷津 include
  • 【Java】学生管理系统MVC

    目录 前言 通过这一个学期的学习 我对Java的理解又多了不少 也学了很多新的知识点 这个项目写的学生管理系统 技术要求是 Springboot JPA thymeleaf MySQL 扩展加了 BootStrap 一 功能要求 二 首先我
  • JS 正则提取字符串中特定的某一部分

    有的时候 我们在项目中会遇到这种需求 提取字符串中特定的某一部分 譬如我们向后端请求数据 得到图片的URL数据 像这样 resources images beauty jpg 我们需要提取beauty jpg这一部分 该怎么做呢 今天和大家
  • 从文件 I/O 看 Linux 的虚拟文件系统

    1 引言 Linux 中允许众多不同的文件系统共存 如 ext2 ext3 vfat 等 通过使用同一套文件 I O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式 更进一步 对文件的 操作可以跨文件系
  • springboot 读取application.properties配置中信息的三种方法

    springboot 读取application properties配置中信息的三种方法 注 想了解指定义properties配置 点击 application properties配置信息 第一种 使用 value 可以注入具体的配置信
  • mybatis 获取自增id

    开发十年 就只剩下这套Java开发体系了 gt gt gt 在开发中碰到用户注册的功能需要用到用户ID 但是用户ID是数据库自增生成的 使用下面的注解mybatis的insert语句可以解决 InsertProvider type User
  • Rust 错误处理

    Rust 错误处理 概述 panic Result Result 传播错误 概述 大多数语言并不区分可恢复错误和不可恢复错误 并采用类似异常这样方式统一处理他们 Rust 没有异常 相反 它有 Result
  • 计算正多边形的面积 Gym - 101840G

    http codeforces com gym 101840 attachments 题目大意 输入n r k n代表往外扩张几次 r代表圆的内接圆半径 k代表多边形的边长 问你每次扩张多边形和内接圆的面积之和 公式 多边形的面积公式 0
  • 码分多路复用

    引子 CDMA是个很重要的通信概念 很多的大学教科书上都会提到它 甚至我们今天可能都在使用它 然而提到cdma 很少有资料提到它的思想是多么的有创意 教科书上关于cdma的章节都过于复杂 过于数学化 虽然也有一些简便的描述方式 但是却几乎没
  • kali安装DVWA

    1 我这里使用的是kali 2020 03 版的系统 默认安装了mysql 的分支版本 MariaDB apache2 php 注 MariaDB是mysql的一个分支 实接操作与mysql没有区别 kali kali whereis my
  • stm32-07-串口通信

    串口引脚对应GPIO
  • 如何使用gdb快速attach到所需进程上

    如何使用gdb快速attach到所需进程上 大家都知道 gdb的调试功能非常强大 可以attach到打开调试开关编译出来的进程上调试进程 但是在这个流程中 你首先需要ps ef grep到你那个进程 然后找到进程号 然后再使用gdb att
  • JDK多版本管理工具jenv

    JENV mac jdk版本管理工具 Mac 安装jenv可以使用brew brew install jenv 配置jenv zsh配置方式 echo export PATH HOME jenv bin PATH gt gt zshrc e
  • Grafana 任意文件读取漏洞复现

    一 漏洞描述 Grafana存在任意文件读取漏洞 通过默认存在的插件 可构造特殊的请求包读取服务器任意文件 二 漏洞影响 Grafana 8 x 三 漏洞复现 可以从登陆页面看到版本信息为 v8 2 4 此版本在漏洞射程范围之内 查看当前所
  • vue3 el-upload文件上传隐藏文件列表

    vue3 el upload文件上传隐藏文件列表 一般情况根据官方教程直接使用el upload上传是会显示一个列表在下面如图 但有时候需求是在导入后不显示这个列表比如 这里只有一个导入按钮 点击之后上传文件 不用显示文件列表 那废话不多说
  • C语言中的printf,sprintf和vsprintf的区别

    参考于 28条消息 printf sprintf vsprintf 区别 ZinanJau的博客 CSDN博客 test printf cpp 此文件包含 main 函数 程序执行将在此处开始并结束 include pch h includ
  • 常用的图像增强方法

    大规模数据集是成功应用深度神经网络的前提 例如 我们可以对图像进行不同方式的裁剪 使感兴趣的物体出现在不同位置 从而减轻模型对物体出现位置的依赖性 我们也可以调整亮度 色彩等因素来降低模型对色彩的敏感度 可以说 在当年AlexNet的成功中
  • 小程序实现语音识别转文字,坑路历程

    最近为小程序增加语音识别转文字的功能 坑路不断 特此记录 微信开发者工具 开发者工具上的录音文件与移动端格式不同 暂时只可在工具上进行播放调试 无法直接播放或者在客户端上播放 debug的时候发现 工具上录音的路径是http tmp xxx
  • signature php今日头条,今日头条_signature 求解

    最近在整理爬虫项目的时候发现 我按照源码穿进去的参数有时候能返回数据 有时候不能返回数据 execjs compile js call TAC sign 6347006294 0 我这样穿的参数 返回的有时候是这样 message succ
  • React Hooks + Umi Hooks + Ant Design Pro -------- 实时请求数据,监测到数据改变就局部刷新表格

    1 前期准备 必要条件1 首先得有一个高级表格 没有自己就去官方文档找一个 必要条件2 高级表格获取数据源方式为request 必要条件3 有umi的包 能用useRequest setTimeout应该也可以但操作应该不一样 原因 我用的