微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 react-admin 为数字字段设置自定义值

如何解决如何使用 react-admin 为数字字段设置自定义值

我有一个包含 totalPricesaleCommission 字段的记录。

我使用 NumberField 正确显示价格:

const RideShow: FC<ShowProps> = (props) => (
  <Show
    {...props}
  >
    <SimpleShowLayout>
      <NumberField
        source="totalPrice"
        label="Prix total"
        locales={['fr']}
        options={{
          style: 'currency',currency: 'EUR',}}
      />
    </SimpleShowLayout>
  </Show>
);

现在我想显示减去销售佣金的价格,这是我从 API 中没有的数据。

我发现的唯一方法create a custom field, 但我必须复制/粘贴几乎所有 NumberField 的逻辑:

const WithoutCommissionPriceField: FC<FieldProps<RideRecord>> = ({ record }) => {
  if (!record) {
    return null;
  }

  const price = record.totalPrice - record.totalPrice * record.saleCommission;

  return (
    <Typography
      variant="body2"
      component="span"
    >
      {price.toLocaleString('fr',{
        style: 'currency',})}
    </Typography>
  );
};

它有效,但我唯一需要的是自定义价格值。

如何通过直接使用带有自定义值的 NumberField 来避免代码重复?

更新:我找到了一种重新使用 NumberField方法

const WithoutCommissionPriceField: FC<FieldProps<RideRecord>> = ({ record,...props }) => {
  if (!record) {
    return null;
  }

  record.totalPriceWithoutCommission = record.totalPrice - record.totalPrice * record.saleCommission;

  return (
    <NumberField
      record={record}
      source="totalPriceWithoutCommission"
      locales={['fr']}
      options={{
        style: 'currency',}}
      {...props}
    />
  );
};

但是我必须更改记录内容的方式对我来说仍然有点笨拙。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。