在React中实现一个过滤器,您可以按照以下步骤进行操作:
import React, { useState } from 'react';
const Filter = ({ data, onFilter }) => {
const [filterValue, setFilterValue] = useState('');
const handleFilterChange = (event) => {
setFilterValue(event.target.value);
onFilter(event.target.value);
};
return (
{data.map((item, index) => (
- {item}
))}
);
};
export default Filter;
import React, { useState } from 'react';
import Filter from './Filter';
const App = () => {
const [data, setData] = useState(['Apple', 'Banana', 'Orange']);
const [filteredData, setFilteredData] = useState(data);
const handleFilter = (filterValue) => {
const filtered = data.filter((item) =>
item.toLowerCase().includes(filterValue.toLowerCase())
);
setFilteredData(filtered);
};
return (
Filter Example
);
};
export default App;
在上面的代码示例中,Filter组件接收两个props:data和onFilter。data是要显示的数据数组,onFilter是一个回调函数,用于处理过滤逻辑。
Filter组件内部使用useState来追踪输入框的值(filterValue),并在输入框的onChange事件中更新它。每次filterValue变化时,都会调用onFilter回调函数,并将filterValue作为参数传递给它。
在父组件中,使用useState来追踪原始数据数组(data)和过滤后的数据数组(filteredData)。handleFilter函数使用Array的filter方法来根据输入的过滤值筛选数据,并将结果设置为filteredData。
最后,将Filter组件渲染到父组件中,并传递filteredData和handleFilter作为props。在Filter组件内部,使用map方法来渲染数据数组的每个元素。
这样,当用户在输入框中输入过滤值时,Filter组件会更新filterValue并调用onFilter回调函数,从而更新过滤后的数据数组,并在页面上显示结果。