📅  最后修改于: 2023-12-03 15:38:25.989000             🧑  作者: Mango
在 ReactJS 中,搜索框是一个非常常见的组件,但是默认情况下,它只会进行简单的字符串匹配过滤。如果我们希望通过更复杂的匹配逻辑来进行过滤,就需要添加自定义过滤器。
实现自定义过滤器的方式非常简单,只需要在搜索框中添加一个过滤器函数,该函数接受当前项的值,并返回一个布尔值表示是否匹配。
以下是一个示例代码,该搜索框将对数据中的 "name" 和 "email" 进行模糊匹配:
import React, { useState } from 'react';
function SearchBox({ data }) {
const [searchTerm, setSearchTerm] = useState('');
const [filteredData, setFilteredData] = useState(data);
const handleInputChange = event => {
const searchTerm = event.target.value;
setSearchTerm(searchTerm);
const filteredData = data.filter(item => {
// 自定义过滤器函数
return (
item.name.toLowerCase().includes(searchTerm.toLowerCase()) ||
item.email.toLowerCase().includes(searchTerm.toLowerCase())
);
});
setFilteredData(filteredData);
};
return (
<div>
<input type="text" placeholder="Search" value={searchTerm} onChange={handleInputChange} />
{filteredData.map(item => (
<div key={item.id}>
<p>{item.name}</p>
<p>{item.email}</p>
</div>
))}
</div>
);
}
export default SearchBox;
除了手动添加自定义过滤器函数之外,还可以考虑使用第三方库来实现更复杂的过滤逻辑。以下是一些常用的过滤器库:
在 ReactJS 中,实现自定义过滤器非常简单。我们只需要在搜索框中添加一个过滤器函数,并在搜索时调用它即可。如果需要更复杂的过滤逻辑,还可以考虑使用第三方库来实现。