React 是一个用于构建用户界面的 JavaScript 库。用户输入过滤表格结果是指根据用户在输入框中输入的内容,动态地过滤并显示表格中的数据。这种功能通常用于提高用户体验,使用户能够快速找到所需的信息。
以下是一个简单的示例,展示如何在 React 中实现用户输入过滤表格结果:
import React, { useState } from 'react';
const data = [
{ id: 1, name: 'Alice', age: 25 },
{ id: 2, name: 'Bob', age: 30 },
{ id: 3, name: 'Charlie', age: 35 },
// 更多数据...
];
function App() {
const [inputValue, setInputValue] = useState('');
const [filteredData, setFilteredData] = useState(data);
const handleInputChange = (event) => {
const value = event.target.value;
setInputValue(value);
const filtered = data.filter(item =>
item.name.toLowerCase().includes(value.toLowerCase())
);
setFilteredData(filtered);
};
return (
<div>
<input
type="text"
placeholder="Filter by name"
value={inputValue}
onChange={handleInputChange}
/>
<table>
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Age</th>
</tr>
</thead>
<tbody>
{filteredData.map(item => (
<tr key={item.id}>
<td>{item.id}</td>
<td>{item.name}</td>
<td>{item.age}</td>
</tr>
))}
</tbody>
</table>
</div>
);
}
export default App;
原因:
解决方法:
useState
正确绑定输入框的值。const handleInputChange = (event) => {
const value = event.target.value;
setInputValue(value);
const filtered = data.filter(item =>
item.name.toLowerCase().includes(value.toLowerCase())
);
setFilteredData(filtered);
};
原因:
解决方法:
import { useCallback } from 'react';
import { debounce } from 'lodash';
const handleInputChange = useCallback(
debounce((value) => {
const filtered = data.filter(item =>
item.name.toLowerCase().includes(value.toLowerCase())
);
setFilteredData(filtered);
}, 300),
[]
);
const handleChange = (event) => {
const value = event.target.value;
setInputValue(value);
handleInputChange(value);
};
通过以上方法,可以有效解决 React 中用户输入过滤表格结果时遇到的常见问题。
领取专属 10元无门槛券
手把手带您无忧上云