react-admin3.0是否支持从服务器执行验证?它似乎删除了表单中的redux-form。那么,如何执行异步验证呢?我一点也不知道。有人能为它提供一些解决方案吗?如果我想做异步验证<SimpleForm>中的一些字段。谢谢。
发布于 2020-01-04 04:04:48
昨天我正在寻找一个解决方案,因为最近几天我在我的新项目中使用了最新版本的react-admin。
在看到你的问题没有得到任何回应后,我花了最后几个小时寻找解决方案。我已经构建了一个简单的插件,叫做ra-remote-validator,它可以帮助你满足这个需求。
你可以在这里找到更多细节:https://www.npmjs.com/package/ra-remote-validator
我希望这能有所帮助,或者,如果你有关于这个话题的消息,我将感谢任何信息!
发布于 2020-01-09 10:35:33
const availableValidate = resource => (
property,
filterId
) => async value => {
if (!value) {
return 'Required';
}
const result = await fetch.query({// i use graphQl ,you can use rest-api
variables: {
filter: [{ property, operation: 'EQUAL', value }],
page: { page: 0, size: 1 },
sort: [{ property: 'id', direction: 'ASC' }],
},
query: gql`
query ${resource}($filter: [SearchCriteria], $page: SearchPage, $sort: [SearchOrder]) {
lists: ${resource}(filter: $filter, page: $page, sort: $sort) {
content {
id
code
name
}
}
}
`,
});
if (result.data.lists.content.length > 0) {
const finalData = filterId
? result.data.lists.content.filter(ele => ele.id !== filterId)
: result.data.lists.content;
if (finalData.length > 0) {
return `Unavailable ${property}`;
}
}
};
const validateField = availableValidate('deliveryTypes');// write a function for validate
<Create {...props} title="Create">
<SimpleForm redirect="list" toolbar={<CreateToolbar />}>
<TextInput
source="code"
resettable
validate={[required(), validateField('code')]}
/>
</SimpleForm>
</Create>https://stackoverflow.com/questions/58600516
复制相似问题