我们想知道如何将现有/选定记录从List传递到react admin中的创建视图。
我们的列表视图中的每个条目都有一个Edit和Create按钮。我们希望能够单击“创建”以显示所述行,并且能够在“创建”中显示该行/记录信息。我知道这听起来与编辑它没什么不同,但我们希望能够从现有功能中复制/创建。如果我们只使用普通的Create视图,我们需要从头开始填写信息。我们有一些情况需要创建预先存在的数据。
我们提出这个问题的另一个原因是,react-admin文档特别指出:
接受记录道具,根据值对象初始化表单。
我们假设你可以将你选择的记录传递给create,我们已经尝试了这个但它似乎不起作用。
感谢任何帮助,谢谢。
这就是我的想法:
export const DataCreate = (props) => (
<Create title="Create new " {...props} >
<TabbedForm record={props.record}
//can we do something like this to pass record to create?>
<FormTab label = "Basic Info">
<TextInput source="type" label="type" />
答案 0 :(得分:1)
我们最近更新了此用例的文档:https://marmelab.com/react-admin/CreateEdit.html#prefilling-a-create-record
这是一个例子:
创建组件
const commentDefaultValue = { nb_views: 0 };
export const CommentCreate = ({ location, ...props }) => (
<Create
record={(location.state && location.state.record) || defaultValue}
location={location}
{...props}
>
<SimpleForm>
<TextInput source="author" />
<RichTextInput source="body" />
<NumberInput source="nb_views" />
</SimpleForm>
</Create>
);
“创建”按钮
import Button from '@material-ui/core/Button';
import { Link } from 'react-router-dom';
const CreateRelatedCommentButton = ({ record }) => (
<Button
component={Link}
to={{
pathname: '/comments/create',
state: { record: { post_id: record.id } },
}}
>
Write a comment for that post
</Button>
);
编辑:发布版本2.2.0
时,不再需要文档中说明的技术。 Create
将自动从位置状态或搜索中读取其默认值。参见https://github.com/marmelab/react-admin/pull/1991。不过,您仍然需要自定义按钮