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

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

文章目录

  • 实现效果
  • 实现步骤
    • 1.引入
    • 2.初始化
    • 3.筛选数据
    • 4.输入和展示数据

实现效果


实现步骤

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} = propsuseEffect(() => {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 (
<Inputvalue={associatedvalue}onChange={e => {setAssociatedValue(e.target.value?.trim())}}placeholder="请输入参数名称、参数显示名、参数说明搜索"allowClearstyle={{ marginLeft: '20px', marginBottom: '6px', width: 350 }}prefix={<SearchOutlined style={{ color: '#DEE0E8' }} />}
/>
<TablerowKey="id"columns={_.filter(paramsCols, item => item.show !== false)}dataSource={_.uniqBy(filterparamList, 'id')}pagination={false}size="middle"scroll={{ y: 350 }}
/>
)

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

  1. 类似百度搜索框实时搜索的实现

    1.html代码 <input type="text" name="ProjectNumber" id="ProjectNumber" ...

  2. Win10左下角搜索框无法搜索点击无反应的解决方法

    为了更便捷,在Win10系统经常会使用到桌面左下角的搜索框进行搜索程序,但是近期Win10搜索框搜不到任何东西,点开就是白框一片空白,不知道如何解决!那么Win10搜索框用不了? 具体解决方法: 1. ...

  3. windows10搜索框不能搜索解决方法

    原文出处:https://blog.csdn.net/qq_40875146/article/details/81742533 解决Windows10搜索框不能搜索问题. 1.首先,打开管理员命令窗口 ...

  4. 解决win10搜索框无法搜索本地应用或无反应

    解决win10状态栏的搜索框无法搜索本地应用或无反应 今天突然出现的问题,在状态栏左下角的搜索框搜索cmd,本来要以管理员运行,结果没有任何反应. 解决办法: 1.首先,打开管理员命令窗口,输入sta ...

  5. Win10左下角搜索框无法搜索无反应的解决方案

    为了更便捷,在Win10系统经常会使用到桌面左下角的搜索框进行搜索程序,但是近期Win10搜索框搜不到任何东西,点开就是白框一片空白,不知道如何解决!那么Win10搜索框用不了?下面装机之家分享一下W ...

  6. Win10任务栏搜索框无法搜索,显示白色页面

    Win10任务栏搜索框无法搜索,显示白色页面 如果确定: Windows search服务启动 打开 %LocalAppData%\Packages\windows.immersivecontrolp ...

  7. [React hooks] Antd Form: Instance created by `useForm` is not connected to any Form element.Forget t

    场景: Warning: Instance created by `useForm` is not connected to any Form element. Forget to pass `for ...

  8. Input搜索框与搜索图标对齐解决方法

    出现的情况 有些网站需要在搜索框旁写一个紧挨着的放大镜图标框.这时候可能就牵涉到对齐问题. 例如小米商城搜索框: 可以简单写一下这两个框: <div class="header-sea ...

  9. 静态html如何设置搜索框,html搜索框怎么设置?html搜索框input标签的使用方法实例...

    本篇文章主要讲述的是关于HTML 搜索框的设置,还有html 搜索框input标签的一些使用方法实例,接下来就让我们一起来阅读这篇关于html 搜索框的文章吧 首先我们来设置一个简单的搜索框: 这是一 ...

最新文章

  1. python表白对话框-python tkinter-消息框、对话框、文件对话框
  2. hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下
  3. Qt for ios 打开相机(添加权限)
  4. 这是一个无效的源路径
  5. Android攻城狮Gallery和ImageSwitcher制作图片浏览器
  6. java自动猜测文件编码
  7. 信号与系统 chapter13 阶跃响应的定义与求法
  8. 个人财务管理系统有源码怎么用_微信里的客户怎么管理?用鱼汛微信管理系统...
  9. 面试官系统精讲Java源码及大厂真题 - 36 从容不迫:重写锁的设计结构和细节
  10. 基于角色(Role-Based)的表单验证
  11. wxPython多个窗口的基本结构
  12. HoloToolkit/unity远程实时传输视频
  13. PLC 控制三相异步电动机正反转实验
  14. MySQL项目--电商平台--数据库搭建
  15. Centos6.10系统迁移到新固态硬盘LVM
  16. ionic安卓打印终极解决方案,支持USB打印
  17. html页面发送微信朋友圈,【源码分享】分享一个基于官方share.html简化的分享js代码(微信,朋友圈,QQ)...
  18. scss动态生成类名、样式值
  19. 用Python自动计算Excel排班表的工时
  20. java语言基础总结ppt_我的java基础知识总结ppt

热门文章

  1. js检查元素是否包括在数组中
  2. android支付宝支付开发过程
  3. PHP错误:Warning: preg_replace() [function.preg-replace]: Unknown modifier '[' in
  4. 5月份美网络游戏用户达8700万 同比增长22%
  5. MySQL_多表链接查询
  6. 【ES6】let命令、const命令、解构赋值
  7. 掉入陷阱的数字 (15 分)
  8. 7-3 素数对猜想 (40 分)
  9. 分离链接法的删除操作函数
  10. mysql自动提交的概念_MySQL入门之事务概念