<selectinput>:如何根据react-admin的Edit组件中的记录数据来填充选择?

时间:2018-07-27 16:23:21

标签: react-admin

我需要根据记录的字段值显示不同的选择。

我需要的代码如下:

const myChoicesGenerator = (record) => {
    if (record.field === false) {
      return ['a', 'b'];
    } else {
      return ['b', 'c'];
    }

<SelectInput ... choices = {myChoicesGenerator}/>

但是不幸的是,我无法在“ choices”属性中传递函数,因此此代码不起作用。

有办法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用<FormDataConsumer />来获取当前记录并将其传递给函数。

<FormDataConsumer>
    {
        ({formData, ...rest}) =>
            <SelectInput 
                 choices={myChoiceGenerator(formData)}
                 {...rest}
            />
    }
</FormDataConsumer>

文档:https://marmelab.com/react-admin/Inputs.html#linking-two-inputs

我不知道值['a', 'b']是否对<SelectInput />有效。考虑使用documentation中所述的元组列表(idname)。