我可以在隐藏的输入字段上使用带有redux-form的异步模糊验证吗?

时间:2016-05-06 18:08:03

标签: redux-form

我有一个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));
    });
  }

1 个答案:

答案 0 :(得分:2)

是的,当隐藏的输入模糊就像在水干燥时询问如何做某事时,询问如何做某事。

隐藏输入的概念在redux-form中并不存在,因为隐藏的输入基于提交表单的HTML方式。 A&#34;隐藏输入&#34;在redux-form中只是一个显示在fields列表中的字段(因此它将被提交),但不会呈现给任何输入。我为主键执行此操作,其中fields列表为['id', 'name', 'email'],我只为nameemail呈现输入,但所有三个都已提交。

我认为你想要的是你的异步验证在渲染(非隐藏)字段模糊时触发,并且对于所有字段,甚至是未渲染的字段,都要传递给异步验证函数。通过上面的例子,这样的东西可以工作:

reduxForm({
  form: 'myForm',
  fields: ['id', 'name', 'email'],
  asyncValidate: doServerSideAsyncValidation,
  asyncBlurFields: ['name', 'email'] // both rendered fields will trigger async validation
})