我有一个redux-form具体问题。
我的表单中有隐藏的输入:
<input type="hidden" {...field} />
并希望通过向服务器发出请求来执行一些异步验证。实现这一目标的最优雅/最合适的方法是什么?我一直在研究异步模糊验证,除了隐藏输入似乎无法触发模糊事件之外,这似乎是正确的。
修改
我通过将以下中间件代码连接到Redux来设法得到我想要的东西:
if (action.type === ActionTypes.MY_EVENT) {
MyModule.asyncValidate({
myField: store.getState().form.myForm.myField.value,
}).catch((error) => {
store.dispatch(stopAsyncValidation('myForm', error));
});
}
答案 0 :(得分:2)
是的,当隐藏的输入模糊就像在水干燥时询问如何做某事时,询问如何做某事。
隐藏输入的概念在redux-form
中并不存在,因为隐藏的输入基于提交表单的HTML方式。 A&#34;隐藏输入&#34;在redux-form
中只是一个显示在fields
列表中的字段(因此它将被提交),但不会呈现给任何输入。我为主键执行此操作,其中fields
列表为['id', 'name', 'email']
,我只为name
和email
呈现输入,但所有三个都已提交。
我认为你想要的是你的异步验证在渲染(非隐藏)字段模糊时触发,并且对于所有字段,甚至是未渲染的字段,都要传递给异步验证函数。通过上面的例子,这样的东西可以工作:
reduxForm({
form: 'myForm',
fields: ['id', 'name', 'email'],
asyncValidate: doServerSideAsyncValidation,
asyncBlurFields: ['name', 'email'] // both rendered fields will trigger async validation
})