react 做筛选更新表格数据

因为搜索页面只有一个字段搜索查看,就前端做了一个字段过滤更新表格内容

import React, { useState } from 'react';
import { Table, Input } from 'antd';

const TableFilter = () => {

  const {Search} = Input
  const [originalData, setOriginalData] = useState(/* 从后端获取的原始数据 */);
  const [data, setData] = useState(originalData);
  const [searchText, setSearchText] = useState('');

  const handleSearch = (value) => {
    // 根据搜索名称过滤数据
    const filteredData = originalData.filter(item =>
    // filter 过滤数据要有返回值
     return Object.values(item).some(val =>
        val.toString().toLowerCase().includes(value.toLowerCase())
      )
    );
    //将过滤搜索出来的内容给表格
    setData(filteredData);
  };


  // 表格列配置
  const columns = [
    {
      title: 'Name',
      dataIndex: 'name',
      key: 'name',
    },
    {
      title: 'Age',
      dataIndex: 'age',
      key: 'age',
    },
  ];

  return (
    <div>
      <Search
        placeholder="Search..."
        allowClear
        onSearch={(value) => handleSearch(value)}
        value={searchText}
        onChange={(e) => {
          setSearchText(e.target.value);
          // 在搜索框清空时,恢复原始数据
          if (e.target.value === '') {
            setData(originalData);
          }
        }}
      />

      <Table
        dataSource={data}
        columns={columns}
        pagination={false}
      />
    </div>
  );
};

export default TableFilter;

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要制作一个查询表格,你可以使用React组件来渲染表格和下拉框。首先,你需要定义一个包含数据的数组,然后将其传递给表格组件。下面是一个简单的实现: ```javascript import React, { useState } from 'react'; const data = [ { name: 'John', age: 25, gender: 'Male' }, { name: 'Jane', age: 30, gender: 'Female' }, { name: 'Bob', age: 40, gender: 'Male' }, { name: 'Alice', age: 35, gender: 'Female' }, ]; const Table = ({ data }) => { const [genderFilter, setGenderFilter] = useState('All'); const handleGenderFilter = (e) => { setGenderFilter(e.target.value); }; const filteredData = genderFilter === 'All' ? data : data.filter(item => item.gender === genderFilter); return ( <div> <label> Filter by gender: <select value={genderFilter} onChange={handleGenderFilter}> <option value="All">All</option> <option value="Male">Male</option> <option value="Female">Female</option> </select> </label> <table> <thead> <tr> <th>Name</th> <th>Age</th> <th>Gender</th> </tr> </thead> <tbody> {filteredData.map((item, index) => ( <tr key={index}> <td>{item.name}</td> <td>{item.age}</td> <td>{item.gender}</td> </tr> ))} </tbody> </table> </div> ); }; const App = () => { return ( <div> <Table data={data} /> </div> ); }; export default App; ``` 在这个例子,我们定义了一个数据数组,包含了每个人的姓名、年龄和性别。然后,我们定义了一个Table组件,它接收一个data属性,用于渲染表格。在组件,我们使用useState钩子来定义了一个genderFilter状态,用于存储用户选择的性别过滤器。我们还定义了一个handleGenderFilter函数,用于更新genderFilter状态。在组件的返回值,我们首先渲染了一个下拉框,用于选择性别过滤器。然后,我们使用map函数来遍历过滤后的数据,并渲染表格行。最后,在App组件,我们将数据传递给Table组件。 这个例子,我们只是简单地使用数组来模拟数据,如果你有一个实际的数据源,可以将其替换为ajax请求或其他数据获取方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值