使用 react-admin,如何从 post 创建评论

Using react-admin , How to create a comment from a post

我正在为一个新项目使用 react-admin。我面临的挑战之一是从 post 创建类似 a 的评论。这是我尝试做的方式 <CreateButton basePath='/prescriptions' label="prescriptions" record={data}/>。我面临的问题是使用post形式中的数据记录来创建评论,这意味着我想要从 commentForm 发送 post_idothers data 。在此先感谢您对我的帮助。

嗯,我在这个中提到的post很快就会发布。此外,我们将在 2.2.0 中默认支持此功能。与此同时,您可以执行以下操作:

import { parse } from "query-string";

const CommentCreate = props => {
    // Read the post_id from the location which is injected by React Router and passed to our component by react-admin automatically
    const { post_id: post_id_string } = parse(props.location.search);

    // Optional if you're not using integers as ids
    const post_id = post_id_string ? parseInt(post_id_string, 10) : '';

    return (
        <Create {...props}>
            <SimpleForm
                defaultValue={{ created_at: today, post_id }}
            >
                // ...
            </SimpleForm>
        </Create>
    );
}

这是从现有 post 创建新评论的按钮:

import CardActions from '@material-ui/core/CardActions';
import ChatBubbleIcon from "@material-ui/icons/ChatBubble";
import { Button } from 'react-admin';

const AddNewCommentButton = ({ record }) => (
    <Button
        component={Link}
        to={{
            pathname: '/comments/create',
            search: `?post_id=${record.id}`
        }}
        label="Add a comment"
    >
        <ChatBubbleIcon />
    </Button>
);

最后,我们如何将它与 post Show 组件中的 ReferenceManyField 一起使用(也适用于 Edit):

const PostShow = props => (
    <Show {...props}>
        <TabbedShowLayout>
        ...
            <Tab label="Comments">
                <ReferenceManyField
                    addLabel={false}
                    reference="comments"
                    target="post_id"
                    sort={{ field: "created_at", order: "DESC" }}
                >
                    <Datagrid>
                        <DateField source="created_at" />
                        <TextField source="body" />
                        <EditButton />
                    </Datagrid>
                </ReferenceManyField>
                <AddNewCommentButton />
            </Tab>
        </TabbedShowLayout>
    </Show>
);

您可以在这个 codesandbox

中看到实际效果

编辑:post 发布 https://marmelab.com/blog/2018/07/09/react-admin-tutorials-form-for-related-records.html