reactjs - 如何选择 Javascript 中的所有复选框?
问题描述
我是 javscript 的初学者,所以我将感谢您的解释。
{isolate_list.map((row) => {
return (
<FormControlLabel
control={
<Checkbox
color="primary"
checked={!!checked}
onChange={toggleCheckbox}
name="checkedA"
>
{" "}
</Checkbox>
}
label={row.isolatename}
>
{""}
</FormControlLabel>
);
})}
我有这个按钮
<Button
onClick={selectall}
style={{ margin: 50 }}
variant="outlined"
label="SELECT ALL ISOLATES"
>
SELECT ALL ISOLATES
</Button>
谁能帮助我如何使用按钮选择所有复选框,同时我可以通过单击单独选择每个复选框?我从这部分开始,但我不确定
const [checked, setChecked] = React.useState(true);
const toggleCheckbox = (event) => {
setChecked(event.target.checked);
};
解决方案
最简单的实现(没有任何表单管理器):
- 声明状态来存储我们检查的 ids 数组。
const [checkedIds, setCheckedIds] = useState([]);
- 实现处理程序。
const handleCheck = useCallback((id) => {
return () => {
setCheckedIds(prevIds => prevIds.includes(id) ? prevIds.filter(item => item !== id) : [...prevIds, id]);
};
}, []);
- 渲染我们的复选框并应用处理程序。
list.map(({ id, isolatename }) => (
<FormControlLabel
key={id}
control={
<Checkbox
color="primary"
checked={checkedIds.includes(id)}
onChange={handleCheck(id)}
name={`checkbox_${id}`}
/>
}
label={isolatename}
/>)
))
附言。如果<Checkbox/>
props 'onChange' 像这样返回回调,(isChecked: boolean) => {}
我们可以简化 (2) 步骤。
const handleCheck = useCallback(id => {
return isChecked => {
setCheckedIds(prevIds => isChecked ? prevIds.filter(item => item == id) : [...prevIds, id]);
};
}, []);
推荐阅读
- angular - 主页路径下的角度路由多个组件
- r - 如何在R中使用气泡图绘制比例数据
- r - R根据另一个值创建和填充新列
- javascript - 使用 JSON 初始化时,Google 地图不再提供图块
- c# - 在 Listview 列而不是行的 Xamarin.Forms 中显示数据
- python - Google Cloud Dataproc OOM 问题
- java - Android Studio:突然的 Gradle 同步错误 - 拼写错误的类名?
- java - 等待特定的时间,但不要打扰应用程序的任何其他功能
- spring - Tomcat 显示错误的 http 状态
- excel - 如何将一个单元格的内容复制到另一个单元格中的特定字符串