将现有记录/值传递给创建组件

时间:2018-05-15 21:50:57

标签: reactjs admin-on-rest react-admin

我们想知道如何将现有/选定记录从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" />

1 个答案:

答案 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。不过,您仍然需要自定义按钮