[英]React Ant design 4 Input search display table data
I'm tried to create Ant design 4 input search to filter data, Name and age, when i search name or age wanna display table data but its not working anyone know how to do that correctly我试图创建 Ant 设计 4 输入搜索来过滤数据、姓名和年龄,当我搜索姓名或年龄时想要显示表数据但它不起作用任何人都知道如何正确地做到这一点
code here代码在这里
const columns = [
{
title: "Name",
dataIndex: "name",
key: "name",
render: text => <a>{text}</a>
},
{
title: "Age",
dataIndex: "age",
key: "age"
}
];
const data = [
{
key: "1",
name: "John Brown",
age: 32
},
{
key: "2",
name: "Jim Green",
age: 42
},
{
key: "3",
name: "Joe Black",
age: 32
}
];
const onSearch = value => console.log(value);
ReactDOM.render(
<div><Search
placeholder="input search text"
allowClear
enterButton="Search"
size="large"
onSearch={onSearch}
/>
<br/>
<br/> <br/>
<Table columns={columns} dataSource={data} /></div>,
document.getElementById('container')
);
Thanks谢谢
filterInput
state with React.useState
, that holds inputSearch value.React.useState
filterInput
它包含 inputSearch 值。 React.useState
returns an array, where the first value is state, and second is a function to update that state value; React.useState
返回一个数组,其中第一个值是 state,第二个是 function 以更新 state 值;filterData
based on filterInput
to filter your data table;filterInput
filterData
过滤你的数据表; for filterData
I return all data if it's empty.对于
filterData
,如果它是空的,我会返回所有数据。 I check if is not a number to decide how to filter, by name or age.我检查是否不是一个数字来决定如何按姓名或年龄进行过滤。
function App() {
const [filterInput, setFilterInput] = React.useState('')
const filterData = () => {
if(filterInput === '') return data
if(isNaN(filterInput)) {
return data.filter(({ name }) => name.includes(filterInput))
}
return data.filter(({ age }) => age === +filterInput)
}
return <div><Search
placeholder="input search text"
allowClear
enterButton="Search"
size="large"
onSearch={setFilterInput}
/>
<br/>
<br/> <br/>
<Table columns={columns} dataSource={filterData()} /></div>
}
ReactDOM.render(
<App />
,
document.getElementById('container')
);
This will fix your problem这将解决您的问题
import React, { useState } from 'react';
import 'antd/dist/antd.css';
import { Table, Input } from 'antd';
import surveyList from './surveyList';
const columns = [
{
title: "Name",
dataIndex: "name",
key: "name",
render: text => <a>{text}</a>
},
{
title: "Age",
dataIndex: "age",
key: "age"
}
];
const data = [
{
key: "1",
name: "John Brown",
age: 32
},
{
key: "2",
name: "Jim Green",
age: 42
},
{
key: "3",
name: "Joe Black",
age: 32
}
];
function SearchTable() {
const [filterTable, setFilterTable] = useState(null);
const onSearch = (value) => {
// const filterData = data.filter((item) => item.survey.includes(value));
const filterData = data.filter((o) => Object.keys(o).some((k) => String(o[k])
.toLowerCase()
.includes(value.toLowerCase())));
setFilterTable(filterData);
};
return (
<div>
<Input.Search
style={{ border: '3px solid red', margin: '0 0 10px 0' }}
placeholder="Search by..."
enterButton
onSearch={onSearch}
/>
<Table
columns={columns}
dataSource={filterTable == null ? data : filterTable}
/>
</div>
);
}
export default SearchTable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.