1

我有一个List视图,我想根据组件创建ReferenceField的表中呈现的当前行的值来呈现字段。Datagrid

如何访问当前行的数据?(当前行的列的值)。

我尝试过record.processed,但我收到一条错误消息,指出记录对象不存在(processed是记录中的一列,我要检查以格式化字段)。我也试过resource.processed, this.props.processedthis.props.record.processed但没有成功。

显示我正在尝试做的代码如下:

<List title="Sales Inquiries" filter={{ request_type: 'sales' }}  {...props}>
      <Datagrid>
          <TextField source="id" />
          <TextField source="firstname" label="First Name" />
          <TextField source="lastname" label="Last Name" />
          <TextField source="company" />
          <TextField source="email" />
          <DateField source="timestamp" label="Received" />

          {record.processed ?
            <ReferenceField label="Processed By" source="processedBy_id" reference="Users">
              <TextField source="username" />
            </ReferenceField>
          : <span>Nobody</span> }

          <ShowButton />
      </Datagrid>
  </List>

编辑

正如@kunal pareek 所建议的那样,将一个 HOC 应用于修改它的 ReferenceField 字段,以显示正确的内容,如下所示:

const CustomField = (props) => (
  <span>
    {props.record.processed ?
      <ReferenceField label="Processed By" source="processedBy_id" reference="Users">
        <TextField source="username" />
      </ReferenceField>
    : <span>Nobody</span> }
  </span>
);
4

2 回答 2

1

该记录在您想要作为变量的位置并不真正可用。它作为道具传递给组件。

所以你可以这样做。

<List title="Sales Inquiries" filter={{ request_type: 'sales' }}  {...props}>
      <Datagrid>
          <TextField source="id" />
          <TextField source="firstname" label="First Name" />
          <TextField source="lastname" label="Last Name" />
          <TextField source="company" />
          <TextField source="email" />
          <DateField source="timestamp" label="Received" />
          <CustomField />

          <ShowButton />
      </Datagrid>
  </List>

const CustomField = (props) => (
          {props.record.processed ?
            <ReferenceField label="Processed By" source="processedBy_id" reference="Users">
              <TextField source="username" />
            </ReferenceField>
          : <span>Nobody</span> }
)

以上只是一个简单的例子。我已将您的代码直接提取并重新格式化,因此它可能无法立即工作。但是我一直在使用这种方法在几个地方更改我的组件的值。

您也可以使用 HOC。你可以在这里找到例子

https://marmelab.com/admin-on-rest/Theming.html

于 2017-07-03T13:01:54.513 回答
0

依赖输入插件可以帮助您。

于 2017-07-03T13:27:53.010 回答