React hooks + antd前台实现input搜索框实时搜索table表格

2023-11-14

阅读本文前提需掌握react hooks 中useState和useEffect基本用法!

?.详见“可选链”语法糖

实现效果

在这里插入图片描述
在这里插入图片描述

实现步骤

1.引入

SearchOutlined 图标
filterparamList:在原始表数据中筛选后的结果列表
associatedvalue:input输入框的值(搜索值)

import { SearchOutlined } from '@ant-design/icons'	
const [associatedvalue, setAssociatedValue] = useState()
const [filterparamList, setFilterParamList] = useState([])	

2.初始化

根据 当前组件获取表格值的方式 进行不同的引入初始化:

重要:初始化原始表格数据

后续步骤中useEffect使用的触发条件是associatedvalue变化,筛选后的列表filterparamList才会相应得到数据
也就是说,如果刚进去input是无值的,filterparamList 会是空白,渲染到表格也是空白,所以我们需要给filterparamList 赋一个初始值,为表格的初始数据(总数据)。

方法一:组件中请求接口获得数据
接口返回值res.result中为

getAllPublicParam(xxxxx).then(res => {
    if (res?.success) {
      setFilterParamList(res.result)     //初始化设置,防止开始空白情况,接收筛选后的列表
    } else {
      message.error(res?.message || '接口异常')
    }
}

方法二:组件中获得父组件传来的表数据props
data为传来的表格初始数据,用一个useEffect设置filterparamList 的初始值

const {data} = props

useEffect(() => {
  setFilterParamList(data.list || [])
}, [data])	  

3.筛选数据

监听associatedvalue改变来关联filterparamList 的更新,使用filter来筛选搜索条件

useEffect(() => {
  if (associatedvalue !== '') {		//当value不为空时
    setFilterParamList([])
    setFilterParamList(
      data?.list?.filter(item => {	
      //  name,displayName,paramValue为接口数据中属性(根据需求灵活变更)
      //  其中任一含有associatedvalue则通过筛选
        if (
          item?.name?.indexOf(associatedvalue) !== -1 ||
          item?.displayName?.indexOf(associatedvalue) !== -1 ||
          item?.paramValue?.indexOf(associatedvalue) !== -1
        ) {
          return true
        }
        return false
      }),
    )
  } else {	//为空时将渲染原始表格数据
    setFilterParamList(data?.list)
  }
}, [associatedvalue]) 

4.输入和展示数据

input中onchangevalue配合,可以实时更改associatedvalue并触发筛选useEffect
table中dataSource赋值的数据将会展示在表格中,此处应为筛选结果列表filterparamList

tip:paramsCols为表格的表头数据,此处不展开(与搜索功能无关),具体使用可详见antd文档

return (
<Input
  value={associatedvalue}
  onChange={e => {
    setAssociatedValue(e.target.value?.trim())
  }}
  placeholder="请输入参数名称、参数显示名、参数说明搜索"
  allowClear
  style={{ marginLeft: '20px', marginBottom: '6px', width: 350 }}
  prefix={<SearchOutlined style={{ color: '#DEE0E8' }} />}
/>
<Table
  rowKey="id"
  columns={_.filter(paramsCols, item => item.show !== false)}
  dataSource={_.uniqBy(filterparamList, 'id')}
  pagination={false}
  size="middle"
  scroll={{ y: 350 }}
/>
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React hooks + antd前台实现input搜索框实时搜索table表格 的相关文章

随机推荐

  • Linux之CGI编程小结

    一 CGI标准输入 环境变量 标准输出 1 标准输入 CGI程序的标准输入是与Web服务器的标准输出对应的 看起来就像其他可执行程序一样通过标准输入 stdin 得到输入信息 实则这些数据是由浏览器传递给服务器后再由服务器定向到CGI的输入
  • 【Java】文档注释

    文章目录 1 概念 2 简单使用演示 3 Java的文档注释的基本格式 4 javadoc的常用标签 1 概念 文档注释 在程序中采用特定的注释格式进行注释 然后通过JDK提供的工具javadoc来解析 生成一套以网页文件形式体现的程序说明
  • Demo项目介绍(Maven)

    1 Demo项目框架 为什么开发要使用框架 1 项目使用的框架 a Srping Boot Springboot可以在几分钟之内搭建好一个可以运行的项目 b Mybatis 对数据库的访问使用Mybatis c Devtools 热部署工具
  • Webots小车与Gampping建图仿真与ORB3算法实践

    此篇博客转自本作者在古月居的博客 https www guyuehome com 34537 前言 在研一的时候 由于XXX项目的需要 其中一项就是需要测试Gmapping建图 自然也要求使用ROS系统 由于之前经常在webots中进行仿真
  • 连接远程服务器的vscode无法格式化代码/文档(已解决)

    甘受人欺 定非懦弱 自谓予智 终是糊涂 问题 vscode右键无法显示 格式化文档 字样 解决方案 在终端输入 usr bin python3 m pip install U autopep8 安装此包 然后vscode右键便显示 格式化文
  • win10 sdk各种版本下载地址

    https developer microsoft com zh cn windows downloads sdk archive
  • 关于OpenMax中sample中缺少OMX_OSAL_Interfaces.h

    最近用到OpenMax在官网下载了sample 可是下载后发现少了 include OMX OSAL Interfaces h include OMX CONF StubbedComponent h 后来仔细看了一下代码 发现这两个文件是A
  • Json插件与json类型的Result

    json插件下载 Json插件提供了一中json类型的Result 一旦为某个Action指定了一个类型为json 的Result 则该Result无序映射到任何视图资源 因为Json插件会负责将Action里的状态信息序列化为Json格式
  • Java——集合

    文章目录 1 集合概述 2 集合类体系结构 Collection集合体系 3 Collection集合常用API 3 Collection集合的遍历方式 方式一 迭代器 方式二 foreach 增强for循环 方式三 lambda表达式 4
  • 驾驶员情绪识别与应用相关笔记

    1 场景 应用 1 1 在检测到驾驶员的愤怒情绪后 便可勒紧安全带 提高制动器的反应响应性 从而减轻事故的伤害 Alaoui 此外 还可通过方向盘振动及警告声 将情绪状态告知驾驶员 并且 为了平复心情 还可考虑自动调整车内照明及音乐 如果自
  • 云原生入门到进阶,1篇就够了!

    开始阅读文章前 请角色切换 设想你作为一位中小型IT公司CTO 面对云原生技术决策 你需要回答两个问题 为什么需要上云 上云有何弊端 作为一家公司的技术决策者 必须理解上云的利与弊 并结合公司各阶段发展目标给出最适合的技术方案 云原生 概述
  • 输入pip命令时,报错Fatal error in launcher

    因为之前也有碰到过这样一个问题 当时了解到是升级pip导致的一些错误 后来通过百度找到了一个解决方案 python m pip 只要是需要用到pip的地方 全部加上python m 好了 解决了问题 这是当时的一个解决方法 问题是解决了 当
  • 用Java代码操作RabbitMQ(包括创建和绑定)

    生产者 package com sky rabbitmq all import com rabbitmq client Channel import com rabbitmq client Connection import com rab
  • AcdbTable 例子学习笔记

    Table 例子学习笔记 在这个例子中 ARX向我们展示了ACDBTABLE类的一些基本操作方法 ACDBTABLE类是ACAD2005及其以后的产品 应该是说ACDBDATATABLE的升级产品 AcDbDataCell AcDbData
  • 判断一个list里是否有其他list------集合list的contain方法

    判断一个list里是否有其他list 最近在做项目时需要判断一个list里是否有其他list 首当其冲就直接想到了contains方法 但总是出现Bug 后面找了好久才发现是这个原因 基础太不扎实 list的contains在比较包含对象时
  • 【HarmonyOS】实现从视频提取音频并保存到pcm文件功能(API6 Java)

    关键字 视频提取类Extractor 视频编解码 保存pcm文件 写在前面 在使用API6开发HarmonyOS应用时 通常会开发一些音视频媒体功能 这里介绍如何从视频中提取音频保存到pcm文件功能 生成pcm音频文件后 就可使用音频播放类
  • ES6知识点总结——学习网站及环境搭建

    1 ES6学习网站 ES6官网 https 262 ecma international org 6 0 阮一峰ES6学习电子书 https es6 ruanyifeng com docs let W3Cschool ES6中文教程 htt
  • html5导航栏文字间距,div字间距-div内文字之间间距设置方法

    本篇文章给大家带来的内容是关于div字间距 div内文字之间间距设置方法 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 div内字与字间距是否可以用CSS代码实现 答案 可以使用css实现div字间距布局 CSS字间距的单词
  • nested exception is java.io.FileNotFoundException: class path resource [applicationContext.xml] cann...

    org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist in pojo UserMapper xml C
  • React hooks + antd前台实现input搜索框实时搜索table表格

    阅读本文前提需掌握react hooks 中useState和useEffect基本用法 详见 可选链 语法糖 文章目录 实现效果 实现步骤 1 引入 2 初始化 3 筛选数据 4 输入和展示数据 实现效果 实现步骤 1 引入 Search