Использование реакции-администратора, Как создать комментарий из поста - PullRequest
0 голосов
/ 25 июня 2018

Я использую Reaction-Admin для нового проекта.Одна из задач, которую я имею право, - создать что-то вроде комментария к записи .Вот как я пытаюсь это сделать <CreateButton basePath='/prescriptions' label="prescriptions" record={data}/>.Проблема, с которой я сталкиваюсь, заключается в использовании записи данных в форме сообщения для создания комментария, что означает, что я хочу отправить post_id с другие данные из commentForm.Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 06 июля 2018

Ну, пост, о котором я упоминал в этом комментарии , скоро будет опубликован.Кроме того, мы собираемся поддерживать это по умолчанию в 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 в компоненте post 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...