我目前正在使用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成员值。
任何帮助将不胜感激!谢谢!
答案 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"
/>