使用 Controller 组件,需要什么才能在 TextFields 中显示标签?

Using the Controller components, what is needed to show the Label in the TextFields?

使用 React-admin,我正在使用 ShowController 组件,这让我可以更自由地自定义 ShowView。但是,我想继续在 TextFields 中看到标签,但是,它们不见了。

这段代码展示了我是如何使用 ShowController 的,它部分工作:只显示记录值,而不是标签(我也试过没有道具 "label",它也不起作用).

const OrderShow = props => {
    return (<ShowController {...props}>
        {controllerProps => {
            return (
                <Grid container spacing={8}>
                     <Grid item xs={3}>
                         <TextField label="ID" source="id" {...controllerProps} />
                         ...

在 ShowView 标准组件中显示标签缺少什么?

TextFields 的标签通常由 source 属性 填充。 如果您想使用带有自定义布局的 <ShowController> 组件,我建议您创建另一个自定义组件并在 <Show><ShowView><SimpleShowLayout>.[=18= 中使用它]

我用 SimpleForm 组件包装了字段,以便能够显示它们的标签并使用自定义 CardActions 隐藏工具栏。

示例:

const FormToolbar = () => (
 <CardActions style={{display: 'none'}}>
 </CardActions>
);

const FormDiv = ({controllerProps, ...props}) => (
 <Grid container spacing={24}>
   <Grid item xs={12}>
     <SimpleForm toolbar={<FormToolbar/>}>
      <TextField {...props} record={controllerProps.record} source="name"/>
     </SimpleForm>
 </Grid>
</Grid>
);

const OrderShow = props => (
 <ShowController {...props} title="Order">
    {controllerProps =>
        <Show actions={<ShowActions pageType="show" />} {...props} {...controllerProps}>
            <SimpleShowLayout>
                <FormDiv controllerProps={controllerProps} />
            </SimpleShowLayout>
        </Show>
    }
</ShowController>
);

export default OrderShow;