如何使用Immutable.js处理Redux-Form FieldArrays的验证?

时间:2019-05-08 04:18:53

标签: reactjs redux-form

我目前正在使用redux-form / immutable,Wizard-Form和FieldArrays为项目创建多步骤表单。我基本上对如何使用immutable.js验证字段数组感到困惑。

我遵循以下示例:https://redux-form.com/8.1.0/examples/immutable/在不可变的validate.js文件中设置验证,但我还必须遵循以下示例https://redux-form.com/8.1.0/examples/fieldarrays/来确定如何对FieldArrays进行验证。

通过以下两个示例,我得出以下结论:

if (values.get('customTrips')) {
    const customTripArrayErrors = [];
    values.get('customTrips').forEach((member, memberIndex) => {
      const customTripMemberErrors = {};
      if (!member.get('from_location_address1') {
      }
    }
}

当我尝试上面的代码时,出现以下错误:

Uncaught TypeError: Cannot read property 'get' of undefined

我只需要帮助弄清楚如何访问validate.js中的FieldArray成员值。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

我的想法是正确的,但在推送到Redux-Form FieldArray时错过了重要的一步。您需要确保在按下时正在创建新的Map,以便可以使用get访问值。如果您不创建新Map而是console.log(member),则将看到它是未定义的。希望这会有所帮助,因为它不是在Redux-Form文档中编写的!

import { Map } from 'immutable';

<FlatButton
  type="button"
  onClick={() => fields.push(new Map())}
  backgroundColor={Color.primary}
  hoverColor={Color.primaryDarkened}
  className="left"
  label="Add a Local Trip"
/>