发送 PATCH 请求时 React-admin 排除字段

问题描述

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

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

(如果需要,我可以共享代码

解决方法

是的,您必须在发送之前更改 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 });
    }),};
,

如果无法修改数据提供者或比文档示例更难,我还建议您查看 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>
    );
}