我的空 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="" />

当它是 nullundefined

时将其覆盖为空字符串

您可以为此使用 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