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