redux-form如何提交所有已注册的字段

时间:2018-01-13 16:17:18

标签: redux redux-form

我花了几个小时试图弄清楚如何做到这一点,所以我希望你们都能提供帮助。这是我的情况:

  1. 我有一个复杂的多页面向导,包含在redux-form中
  2. 基本上所有输入都是可选的。用户可以尽可能地去,并可以尽早放弃工作流程。
  3. 我想将每个字段作为null启动,并且只在用户实际看到它时才设置字段的值。例如,我想将一个复选框字段值作为null启动,并且如果用户实际点击了该向导页面,则只在后端将其设置为false,即使他们从未与该字段进行过互动。
  4. 我想避免命名向导页面上的字段,或者不惜一切代价保存任何向导元数据(例如,用户已将其转到第4页)。这会真正降低灵活性,因为我们的工作流程正在迅速发展,我希望能够正常工作,因为我可能会在页面之间移动字段。
  5. Redux-form对于这个通用向导用例非常棒,因为它会在字段呈现到页面时动态注册字段。我可以捕获next / submit上的值并将它们保存到db中,但它只是用户触及的子集。

    理想情况下,我可以设置一些选项来提交所有已注册字段的值,但这并不存在。我想要追求的下一个选项是在页面的mount上获取所有已注册的字段,并使用该字段的默认值调用onChange,这样它们最终都会以表单值结束。但是,我找不到任何方法来从redux-form获取已注册字段的句柄。我想我可以直接进入商店,我知道它们存在于表单状态树中,但这看起来非常脆弱和草率。

    如果我给表单initialValues,那么一切都会提交。然而,这并没有真正解决我的问题,因为我仍然不能告诉用户何时实际上决定将值保持为默认值(即已经看过页面)。 Redux-form已经很好地在给定时间动态地确定页面上的表单字段,我只是想利用它。

    有关如何做到这一点的任何想法?如果不清楚,请告诉我。

2 个答案:

答案 0 :(得分:1)

我认为最好的选择可能就在这里:https://github.com/erikras/redux-form/issues/2368#issuecomment-351690980

基本上,这表明我提到的想要避免的问题 - 进入表单状态以获取注册字段。我想如果我将整个表单的initialValues与通过链接的GitHub注释中的代码提交过滤到已注册的字段进行组合,我将能够完成这项工作。凌乱而且不完全理想,但也不可怕。

答案 1 :(得分:0)

我不认为Redux Form的注册字段概念会对您有所帮助。已注册的字段会跟踪在任何给定时间点安装的字段,而不是在表单生命周期的任何时间点已安装的字段。

您可以将每个页面放在表单部分中,并添加一些机制,这些机制在安装时标记表单部分已经安装并且(可能)由用户看到。然后,您可以在提交时过滤整个表单部分,而无需了解内容,这是您想要避免的。