我已经阅读了一天的文档和论坛,却没有找到答案的解决方案。我想知道react-admin是否可以实现以下目的?
我有一个资源文档,可以为其添加模板。 模板的数量是无限的,但是一旦添加了模板,就不能对其进行编辑或移动。
编辑文档时,可以编辑文档的标题和说明,也可以添加新模板,但是不能修改/删除旧模板。
例如,看下面的这张图片:
在标题,说明和创建日期下面,有一个ArrayInput字段,带有source ='templates'。
第一个条目对应于我已经创建的条目,但是它是可变的。 底部是显示模板的简单数据网格。
我要么需要一个数据网格,并且只能创建新模板,要么使ArrayInput中的现有条目不可变。
是否有干净的方法来实现这一目标? 如果不是,则应该是imo功能。你觉得呢?
答案 0 :(得分:1)
这是一个非常具体的用例,因此我们不支持开箱即用。但是,如documentation中所述,ArrayInput
接受的唯一子对象是迭代器的实现,该迭代器是负责允许添加/删除和显示输入的组件。我们仅提供SimpleFormIterator
,但您可以根据其source进行制作。
我认为您可能需要一个迭代器组件,该组件接受两个渲染道具,一个用于返回字段的现有项,另一个用于返回输入的新项。这样使用:
<ArrayInput source="templates">
<SimpleFormIterator
renderExisting={() => ([
<TextField source="country" />,
<TextField source="templateId" />,
<NumberField source="pages" />,
])}
renderNew={() => ([
<TextInput source="country" />,
<TextInput source="templateId" />,
<NumberInput source="pages" />,
])}
/>
</ArrayInput>