我在一个有许多复选框的字段中使用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 ===> 复选框组件的默认状态。 警告:这不能与选中一起使用。决定 在使用受控或不受控制的输入元素和删除之间 这些道具之一。