reactjs - 为什么我的复选框在 ReactJS 中取消选中后不返回
问题描述
我有复选框,您可以随意点击。我的问题是我取消选中后它没有检查。我提交时的值也没有出现在 console.log 中
请在此处检查我的代码和框 单击此处
<Label htmlFor={id}>
<Input
type="checkbox"
id={name}
name={name}
value={value}
checked={checked}
onChange={onChange}
/>
<Indicator />
</Label>
<form onSubmit={handleSubmit}>
{products.map((product) => (
<div key={product}>
<Input
name={values.products}
value={values.products}
checked={values.products}
onChange={({ target }) => setFieldValue("products", target.value)}
/>
</div>
))}
<button type="submit">Submit</button>
</form>
解决方案
当您选中一个复选框时,您将获得该值并检查该值是否已存在于产品列表中,如果它不存在,那么您应该添加该值(这将是您的检查部分)否则您可以从产品(这将是您取消选中)。
<Checkbox
name="products"
value={product}
checked={values.products.includes(product)}
onChange={({ target }) => {
let updatedProducts;
if (values.products.includes(product)) {
updatedProducts = values.products.filter(
(product) => product !== target.value
);
} else {
updatedProducts = [...values.products, target.value];
}
setFieldValue("products", updatedProducts);
}}
/>
工作沙箱
推荐阅读
- c# - Redis 连接池的这种实现看起来是否正确?
- postgresql - 使用 jenkins 从 sftp 服务器将数据加载到 RDS Postgresql
- android - Android Compose:在图像上绘制透明圆圈
- amazon-web-services - 使 AWS RDS 可从 Lambda 函数访问
- angular - 从组件到列表/表格的大子级的角度模板
- sql-server - SQL Server“未指定列名” - 但它是
- javascript - 按选定行的材料 ui 数据表过滤器
- javascript - 将丢失的变量推送到 dataLayer 中,保持其他所有内容不变
- docker - 尝试运行多维数据集 js 时出现此错误
- reactjs - Material UI - 关闭模式将焦点状态留在打开它的按钮上