在 react-admin 中自定义显示表单

custom show form in react-admin

我尝试使用 flexbox 创建自定义表单(布局)以在 react-admin 中显示视图,但我不知道从哪里开始。

对于创建和编辑视图,我们可以使用 'FormWithRedirect',如 react-admin 文档中所述,以使用 flexbox 创建自定义视图: https://marmelab.com/react-admin/CreateEdit.html

    const VisitorForm = props => (
        <FormWithRedirect
            {...props}
            render={formProps => (
                // here starts the custom form layout
                <form>
                    <Box p="1em">
.....
                        <TextInput source="first_name" resource="customers" fullWidth />

当尝试使用 flexbox 元素呈现显示视图时,不会呈现 react-admin 组件。 显示视图的等效方法是什么?如何在显示视图中使用 flexbox?

export const PostShow = (props) => (
    <Show {...props}>
        <SimpleShowLayout>
            <Box><TextField source="title" /></Box> // TextField is not rendered.

您应该创建一个替代的显示布局组件。它会收到一个 record 道具,其中包含从 dataProvider 获取的数据:

const MyShowLayout = ({ record }) => (
  <Box>
      // use record directly
      <Typography>{record.title}</Typography>
      // or use react-admin components by passing record 
      <TextField source="title" record={record} />
  </Box>
);

然后,在 PostShow 中使用您的自定义布局,如下所示:

const PostShow = props => (
    <Show {...props}>
        <MyShowLayout />
    </Show>
);

呈现时,<Show> 组件克隆其子组件并传递获取的 record