我的空 TextInput 值是否可以作为空字符串发送到 DataProvider 而不是转换为 null?
Can my empty TextInput value be sent to the DataProvider as empty string instead of converted to null?
我在 <SimpleForm>
中使用 <TextInput>
,当我在运行时清除值时,react-admin 将 属性 的值设置为 null
当它将值发送到 DataProvider 时。我想存储空字符串而不是空字符串。那可能吗?如果是,怎么做?
你可以尝试在里面加上initialValue=""
道具,比如
<TextInput initialValue="" />
当它是 null
或 undefined
时将其覆盖为空字符串
您可以为此使用 react-final-form parse
道具(参见 https://final-form.org/docs/react-final-form/types/FieldProps#parse):
<TextInput
source="author.name"
parse={value => value}
/>
默认会将空字符串转换为undefined
(参见https://final-form.org/docs/final-form/faq#why-does-final-form-set-my--field-value-to-undefined),react-admin 将那些未定义的值转换为空值。
当前版本的 react-admin
允许您使用 sanitizeEmptyValues
属性更改此行为:
export const PostEdit = (props) => (
<Edit {...props}>
<SimpleForm sanitizeEmptyValues={false}>
<TextInput source="title" />
<JsonInput source="body" />
</SimpleForm>
</Edit>
);
官方文档中的更多详细信息:https://marmelab.com/react-admin/CreateEdit.html#setting-empty-values-to-null
我在 <SimpleForm>
中使用 <TextInput>
,当我在运行时清除值时,react-admin 将 属性 的值设置为 null
当它将值发送到 DataProvider 时。我想存储空字符串而不是空字符串。那可能吗?如果是,怎么做?
你可以尝试在里面加上initialValue=""
道具,比如
<TextInput initialValue="" />
当它是 null
或 undefined
您可以为此使用 react-final-form parse
道具(参见 https://final-form.org/docs/react-final-form/types/FieldProps#parse):
<TextInput
source="author.name"
parse={value => value}
/>
默认会将空字符串转换为undefined
(参见https://final-form.org/docs/final-form/faq#why-does-final-form-set-my--field-value-to-undefined),react-admin 将那些未定义的值转换为空值。
当前版本的 react-admin
允许您使用 sanitizeEmptyValues
属性更改此行为:
export const PostEdit = (props) => (
<Edit {...props}>
<SimpleForm sanitizeEmptyValues={false}>
<TextInput source="title" />
<JsonInput source="body" />
</SimpleForm>
</Edit>
);
官方文档中的更多详细信息:https://marmelab.com/react-admin/CreateEdit.html#setting-empty-values-to-null