2017-08-21 192 views
0

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

我尝试使用options attribute这样的:

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

,但没有运气,所有的复选框被默认选中,但它们是不可用的:他们不能被取消选中,也没有在POST/PUT发送请求。

谢谢!

PS:A check all按钮也可能不错,如果有人已经实施了一个,我会很高兴看到它是如何完成的。

回答

1

您应该在包括此输入的表单上使用defaultValue

关于检查所有按钮,这可以在custom input执行。您可以复制/粘贴CheckboxGroupInput的代码并在其中实施逻辑。

关于值转换回数字,使用normalize道具:

<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' }, 
    ]} 
/> 
+0

谢谢。我使用了'defaultValue'。 –

+0

顺便说一下,我将ID设置为数字,但手动检查它们后,它们会以字符串的形式发送,有办法将它们保存为数字吗? –

+0

是的,您可以使用[normalize](http://redux-form.com/7.0.3/docs/api/Field.md/#-code-normalize-value-previousvalue-allvalues-previousallvalues-gt-nextvalue -code-optional-)prop: – Gildas

0

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

+0

这不起作用,似乎该选项没有在'admin-on-rest'中实现。 –

1

理由是:当您使用checked属性,这意味着你正在使controlled component和检查值始终为真:

checked : true

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

代替checked使用defaultChecked,就像这样:

options={{ 
    defaultChecked: true 
}} 

检查DOC

defaultChecked ===>布尔===>我们的复选框的默认状态零件。 警告:这不能与检查结合使用。决定 使用受控或不受控制的输入元素,并删除 其中一个道具。

+0

对不起,它似乎无法正常工作在管理 - 休息。 –