Redux表单-使用动态字段名称初始化状态

时间:2018-10-01 18:21:29

标签: reactjs redux redux-form

我在尝试为表单上的某些字段设置默认值时遇到一些问题。我遇到的问题是,由于它位于.map函数内部,因此我需要具有动态字段名称,并且不知道在尝试在自己的`mapStateToProps中使用<pre> {{ form.value | json }} </pre>时应该如何命名。

“我的字段数组”也位于父组件的FormSection内部。

我正在尝试为其设置默认值的字段。

intializeValues

具有redux的父组件


{fields.map((table, index) =>

  <Field
    name={`${table}.leftStile`}
    type="text"
    component={renderField}
    label="leftStile"
  />
}

 <FormSection name="dimensions">
   <OrderTable />
 </FormSection>

1 个答案:

答案 0 :(得分:0)

如果您还可以提供演示性组件DoorOrders,我将更新答案。还有fields道具的形状或示例。
现在,我将假设fieldsDoorOrders的道具,它不是来自redux,并且形状像:

[
    { leftStile: "firstName", initialValue: "John" },
    { leftStile: "lastName", initialValue: "Doe" },
    //...
]

您可以在mapStateToProps函数内作为第二个参数访问这些道具

import { fromPairs } from "ramda"

//...

const mapStateToProps = (state, ownProps) => ({
   form: state.form,
   submitted: state.Orders.submitted,
   initializeValues: R.fromPairs( // <= see below
       ownProps.fields.map(table => [table.leftStile, table.initialValue])
   )
});

//...

我正在使用ramda's fromPairs[[a, b], [c, d]]转换为{ a: b, c: d },因为我喜欢它,但其他lodash之类的库也可以实现这一点(或普通的javascript)。

我希望这会有所帮助。