【问题标题】:React-admin exclude fields when sending PATCH requests发送 PATCH 请求时 React-admin 排除字段
【发布时间】:2021-05-17 18:14:51
【问题描述】:

我正在使用 react-admin 在一个简单的管理面板中显示我的数据。我有一个“timeAdded”字段,我想在<List> 中显示,但我不希望它在我<Edit> 时在有效负载中发送(我的 api 不接受尝试修补“timeAdded”字段的补丁请求)。

在使用<Edit> 组件时,有什么方法可以删除我不想在负载中发送的字段/参数?

(如果需要我可以分享代码)

【问题讨论】:

    标签: react-admin


    【解决方案1】:

    是的,您必须在发送数据之前在您的 dataProvider 中更改数据。 dataProvider documentation 展示了如何做到这一点:

    import simpleRestProvider from 'ra-data-simple-rest';
    
    const dataProvider = simpleRestProvider('http://path.to.my.api/');
    
    const myDataProvider = {
        ...dataProvider,
        update: (resource, params) => {
            if (resource !== 'posts' || !params.data.pictures) {
                // fallback to the default implementation
                return dataProvider.update(resource, params);
            }
            /**
             * For posts update only, remove timeAdded field
             */
            const { data: { timeAdded, ...restData }, ...rest } = params;
            return dataProvider.update(resource, { data: restData, ...rest });
        }),
    };
    

    【讨论】:

      【解决方案2】:

      如果修改数据提供者不可能或比文档示例更难,我还建议查看transform 功能。

      此处描述:https://marmelab.com/react-admin/CreateEdit.html#transform,此处给出示例:https://marmelab.com/react-admin/CreateEdit.html#altering-the-form-values-before-submitting

      它可能看起来像这样:

      export const WhatEver = (props) => {
          const transform = (data) => {
              if(data.timeAdded) {
                  delete data.timeAdded;
              }
              return data
          };
          return (
              <Edit {...props} transform={transform} >
                  ...
              </Edit>
          );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-07
        • 1970-01-01
        • 2017-09-10
        • 2016-04-26
        • 1970-01-01
        • 2019-08-01
        • 2016-10-25
        • 1970-01-01
        相关资源
        最近更新 更多