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