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



我有一个特定于redux形式的问题。

我的表单中有一个隐藏的输入:

<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));
    });
  }

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

隐藏输入的概念在redux-form中并不真正存在,因为隐藏输入是基于旧的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
})

最新更新