reactjs - MUI:跟踪多个复选框状态
问题描述
我在使用 MUI 的选项卡中有一个复选框元素。切换选项卡时,它会删除复选框视觉效果。
{listItem.map((checkbox, index) => {
return (
<FormControlLabel className="twocolelement"
control={
<Checkbox
key={(index) + (checkbox.Name)}
name={checkbox.Name}
value={checkbox.Weight}
id={checkbox.Category}
checked={isChecked==index}
color="primary"
onChange={event => handleCheckboxChange(index, event)}
onClick={() => isCheckboxChecked(index)}
/>
}
label={(checkbox.Brand) + ' ' + (checkbox.Name)}
/>
);
})}
const [isChecked, setIsChecked] = React.useState([]);
const isCheckboxChecked = (index) => {
setIsChecked(index)
console.log(index)
}
这会保持状态,但它就像一个单选按钮(只允许一个选择)
在选项卡之间移动时如何保持复选框状态(选中)?
解决方案
如果要存储所有的Checkbox
s 状态:
const [isChecked, setIsChecked] = React.useState(() =>
listItem.map((i) => false)
);
const isCheckboxChecked = (index, checked) => {
setIsChecked((isChecked) => {
return isChecked.map((c, i) => {
if (i === index) return checked;
return c;
});
});
};
console.log(isChecked);
return (
<div>
{listItem.map((checkbox, index) => {
return (
<FormControlLabel
key={index + checkbox.name}
className="twocolelement"
control={
<Checkbox
name={checkbox.name}
value={checkbox.weight}
id={checkbox.category}
checked={isChecked[index]}
color="primary"
onChange={(e) => isCheckboxChecked(index, e.target.checked)}
/>
}
label={checkbox.name}
/>
);
})}
</div>
);
推荐阅读
- sql - 如何为给定的作业范围以增量方式运行 sql 语句
- ajax - Laravel Ajax 加载帖子失败
- c# - 使用一个搜索框从不同表中搜索和显示记录
- ngx-mydatepicker - 如何将周末从周六/周日更改为其他日子
- vba - 如何将触发文件夹创建的邮件插入该文件夹?
- go - 无法获取当前窗口标题
- fortran - 尝试打开文本文件时,Fortran 代码产生运行时错误“不支持操作”
- c# - 应用 TreeView 过滤器后 DataGridView 中出现多余的行
- php - 使用不同的变量加载相同的视图两次
- pyspark - 如何读取 pyspark 提取的一个文件中的多个嵌套 json 对象到 Azure databricks 中的数据框?