带有复选框的Next.js TypeScript过滤表是一种前端界面组件,用于展示数据列表并允许用户通过勾选复选框来过滤数据。这种表通常用于数据筛选和管理,可以应用于各种场景,如商品筛选、用户管理、数据统计等。
根据实现方式和功能,过滤表可以分为以下几类:
以下是一个简单的Next.js TypeScript过滤表示例,包含复选框用于筛选数据:
// pages/index.tsx
import { useState } from 'react';
interface Item {
id: number;
name: string;
category: string;
}
const items: Item[] = [
{ id: 1, name: 'Item 1', category: 'A' },
{ id: 2, name: 'Item 2', category: 'B' },
{ id: 3, name: 'Item 3', category: 'A' },
// ...更多数据
];
export default function Home() {
const [categoryFilter, setCategoryFilter] = useState<string[]>([]);
const filteredItems = items.filter(item =>
categoryFilter.length === 0 || categoryFilter.includes(item.category)
);
return (
<div>
<h1>过滤表示例</h1>
<div>
<label>
<input
type="checkbox"
value="A"
onChange={e => {
const newFilter = [...categoryFilter];
if (e.target.checked) {
newFilter.push('A');
} else {
newFilter.splice(newFilter.indexOf('A'), 1);
}
setCategoryFilter(newFilter);
}}
/>
类别 A
</label>
<label>
<input
type="checkbox"
value="B"
onChange={e => {
const newFilter = [...categoryFilter];
if (e.target.checked) {
newFilter.push('B');
} else {
newFilter.splice(newFilter.indexOf('B'), 1);
}
setCategoryFilter(newFilter);
}}
/>
类别 B
</label>
</div>
<ul>
{filteredItems.map(item => (
<li key={item.id}>{item.name} - {item.category}</li>
))}
</ul>
</div>
);
}
onChange
事件中正确更新状态,并使用受控组件来管理复选框的状态。请注意,以上代码和链接仅供参考,实际应用中可能需要根据具体需求进行调整。
领取专属 10元无门槛券
手把手带您无忧上云