1 回答
TA贡献1811条经验 获得超4个赞
我想这就是你想要的:
const FormTags: React.FC = () => {
const [selected, setSelected] = React.useState<number[]>([]);
const handleTag = (e: React.FormEvent<HTMLInputElement>) => {
const id: number = +e.currentTarget.value;
const { checked } = e.currentTarget;
if (checked) {
setSelected(prev => [...prev, id]);
} else {
setSelected(prev => prev.filter(item => item !== id));
}
};
return (
<form>
{tags &&
tags.map((tag: any) => (
<input
checked={selected.includes(tag.id)}
type="checkbox"
value={tag.id}
onClick={handleTag}
/>
))}
</form>
);
};
当您选中该复选框时,其ID将添加到选择状态。如果取消选中,该 ID 将被删除。
代码中的问题是你试图析构id,这是一个数字,而实际上你必须析构前一个数组,然后添加id。这可以很容易地传递给将接收先前状态并返回新状态的函数。setSelect
setSelected(prev => [...prev, id]);
有关详细信息,请查看 React 文档。
添加回答
举报