在React JS中,使用多个复选框(CheckBoxes)来过滤列表是一个常见的需求。以下是这个问题的基础概念、相关优势、类型、应用场景以及解决方案。
useState
钩子来管理组件的状态。以下是一个简单的示例,展示如何在React JS中使用多个复选框来过滤列表。
import React, { useState } from 'react';
const FilteredList = () => {
const [filters, setFilters] = useState({
red: false,
blue: false,
green: false,
});
const items = [
{ id: 1, color: 'red', name: 'Apple' },
{ id: 2, color: 'blue', name: 'Banana' },
{ id: 3, color: 'green', name: 'Cherry' },
{ id: 4, color: 'red', name: 'Date' },
];
const handleFilterChange = (event) => {
const { name, checked } = event.target;
setFilters({
...filters,
[name]: checked,
});
};
const filteredItems = items.filter((item) =>
Object.keys(filters).every(
(color) => !filters[color] || item.color === color
)
);
return (
<div>
<div>
<label>
<input
type="checkbox"
name="red"
checked={filters.red}
onChange={handleFilterChange}
/>
Red
</label>
<label>
<input
type="checkbox"
name="blue"
checked={filters.blue}
onChange={handleFilterChange}
/>
Blue
</label>
<label>
<input
type="checkbox"
name="green"
checked={filters.green}
onChange={handleFilterChange}
/>
Green
</label>
</div>
<ul>
{filteredItems.map((item) => (
<li key={item.id}>{item.name}</li>
))}
</ul>
</div>
);
};
export default FilteredList;
useState
钩子来管理复选框的状态。handleFilterChange
函数处理复选框的变化,并更新状态。Array.prototype.filter
方法根据当前选择的过滤器来筛选列表项。react-window
)来优化性能。通过这种方式,你可以有效地使用多个复选框来过滤列表,并提供良好的用户体验。
领取专属 10元无门槛券
手把手带您无忧上云