1

コンポーネントが作成するテーブルでレンダリングされている現在の行の値に基づいてフィールドをレンダリングしたいListビューがあります。ReferenceFieldDatagrid

現在の行のデータにアクセスするにはどうすればよいですか? (現在の行の列の値)。

試してみrecord.processedましたが、レコードオブジェクトが存在しないというエラーが表示されます(processedフィールドをフォーマットするためにチェックしたいレコードの列です)。resource.processedthis.props.processed、およびも試しましたが、this.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 が提案したように、次のように適切なコンテンツを表示するために、それを変更する ReferenceField フィールドに HOC を適用しました。

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 に答える