我知道<SimpleForm>
正在使用redux-form。
我想在提交表单时排除发送的特定字段。
当我编辑我的实体&#34;用户&#34; RestClient发送GET_ONE请求和我的API响应:
{
name: "Lior",
age: "100",
type: "Manager",
}
<SimpleForm>
是这样的:
<SimpleForm>
<TextInput source="name"/>
<TextInput source="age"/>
</SimpleForm>
当我发送表单时,我在请求中看到的字段是:姓名,年龄和类型,即使没有&#34;输入&#34;或&#34;字段&#34; 类型。
我怎样才能避免&#34;输入&#34;要发送?
<Show>
以及更多.. 谢谢!
答案 0 :(得分:1)
没有反应管理方式来做这件事。我认为一个restClient中间件是要走的路,但你不想要那样。你可以做的是使用重构的mapProps
创建一个HOC并用它包裹SimpleForm
。像(未经测试的代码):
const withLimitedProps = properties => mapProps(({save,...props}) => ({...props,save: (record,redirect) => save(properties.reduce((acc,property)=>{
acc[property]=record[property]
},{})});
const UserEditForm = withLimitedProps(['name','age'])(SimpleForm)
代理保存道具,减少了提交的记录。您始终可以添加更多功能,例如从redux-form状态中选择当前字段并仅减少它们。这将提供您想要的行为。
答案 1 :(得分:1)
您可以自定义restClient
,仅在调用UPDATE
时发送字段子集:
case UPDATE:
url = `${apiUrl}/${resource}/${params.id}`;
options.method = 'PUT';
const { name, age } = params.data; // type is ignored
options.body = JSON.stringify({ name, age });