复选框默认选中



我在一个有许多复选框的字段中使用CheckboxGroupInput,我希望默认情况下选中它们。

我尝试像这样使用options attribute

<CheckboxGroupInput source="foo" choices={[
{ id: 0, name: 'bar' },
{ id: 1, name: 'bar' }
]} options={{
checked: true
}}/>

但是没有运气,默认情况下所有复选框都处于选中状态,但它们不可用:它们不能取消选中,也不能在 POST/PUT 请求中发送。

谢谢!

PS:一个check all按钮也可能很好,如果有人实现了它,我很高兴看到它是如何完成的。

您应该在包含此输入的表单上使用默认值。

关于"全部选中">按钮,这可以在自定义输入中实现。您可以复制/粘贴CheckboxGroupInput的代码并在其中实现逻辑。

关于将值转换回数字,请使用规范化道具:

<CheckboxGroupInput
normalize={value => value.map(v => parseInt(v, 10))}
source="notifications"
choices={[
{ id: 12, name: 'Ray Hakt' },
{ id: 31, name: 'Ann Gullar' },
{ id: 42, name: 'Sean Phonee' },
]}
/>

老实说,我不熟悉反应或休息管理员,所以我可能离这里很远,但是你不能把checked: true部分放到选择对象中吗?(即:{ id: 0, name: 'bar', checked: true }(

原因是当你使用checked属性时,这意味着你正在使它成为受控的组件,并且check的值总是为真:

checked : true

这就是为什么它的状态没有改变。

而不是checked使用defaultChecked,像这样:

options={{
defaultChecked: true
}}

检查文档

默认选中===> bool ===> 复选框组件的默认状态。 警告:这不能与选中一起使用。决定 在使用受控或不受控制的输入元素和删除之间 这些道具之一。

最新更新