使用react-admin,如何根据帖子创建评论

时间:2018-06-25 14:23:36

标签: reactjs admin-on-rest api-platform.com react-admin

我正在对新项目使用react-admin。我所面临的挑战之一就是创建帖子评论之类的东西。这是我尝试执行的方法<CreateButton basePath='/prescriptions' label="prescriptions" record={data}/>。我正面临的问题是使用发布表单中的数据记录创建评论,这意味着我要发送 post_id 以及来自commentForm的其他数据。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

好吧,我在comment中提到的帖子很快就会发布。此外,默认情况下,我们将在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>
    );
}

这是从现有帖子中创建新评论的按钮:

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>
);

最后,我们如何将其与帖子ReferenceManyField中的Show一起使用(也可以在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

中看到实际的操作

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