1

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

1 回答 1

2

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

隐藏输入的概念实际上并不存在redux-form,因为隐藏输入是基于 ye olde HTML 提交表单的方式。“隐藏输入”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
})
于 2016-05-07T06:15:01.857 回答