在React钩子中使用复选框过滤获取的数据可以通过以下步骤实现:
以下是一个示例代码:
import React, { useState, useEffect } from 'react';
const FilteredDataComponent = () => {
const [originalData, setOriginalData] = useState([]); // 原始数据
const [filteredData, setFilteredData] = useState([]); // 过滤后的数据
const [checkboxValues, setCheckboxValues] = useState({
option1: false,
option2: false,
option3: false,
}); // 复选框值
useEffect(() => {
// 模拟异步获取数据
setTimeout(() => {
const data = [
{ name: 'John', age: 25, option: 'option1' },
{ name: 'Alice', age: 30, option: 'option2' },
{ name: 'Bob', age: 35, option: 'option3' },
];
setOriginalData(data);
setFilteredData(data);
}, 1000);
}, []);
useEffect(() => {
// 复选框值变化时重新过滤数据
const filtered = originalData.filter(item => {
return (
(checkboxValues.option1 && item.option === 'option1') ||
(checkboxValues.option2 && item.option === 'option2') ||
(checkboxValues.option3 && item.option === 'option3')
);
});
setFilteredData(filtered);
}, [checkboxValues]);
const handleCheckboxChange = e => {
const { name, checked } = e.target;
setCheckboxValues(prevState => ({
...prevState,
[name]: checked,
}));
};
return (
<div>
<label>
<input
type="checkbox"
name="option1"
checked={checkboxValues.option1}
onChange={handleCheckboxChange}
/>
Option 1
</label>
<label>
<input
type="checkbox"
name="option2"
checked={checkboxValues.option2}
onChange={handleCheckboxChange}
/>
Option 2
</label>
<label>
<input
type="checkbox"
name="option3"
checked={checkboxValues.option3}
onChange={handleCheckboxChange}
/>
Option 3
</label>
<ul>
{filteredData.map((item, index) => (
<li key={index}>
{item.name} - {item.age}
</li>
))}
</ul>
</div>
);
};
export default FilteredDataComponent;
在这个例子中,我们使用useState来创建了三个状态:originalData用于存储原始数据,filteredData用于存储过滤后的数据,checkboxValues用于存储复选框的值。然后使用useEffect钩子来获取数据并更新状态。
在渲染过程中,我们展示了复选框和过滤后的数据。每当复选框的值发生变化时,会重新过滤数据并展示更新后的结果。
这只是一个简单的示例,你可以根据实际需求进行修改和扩展。
领取专属 10元无门槛券
手把手带您无忧上云