我在尝试为表单上的某些字段设置默认值时遇到一些问题。我遇到的问题是,由于它位于.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>
答案 0 :(得分:0)
如果您还可以提供演示性组件DoorOrders
,我将更新答案。还有fields
道具的形状或示例。
现在,我将假设fields
是DoorOrders
的道具,它不是来自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)。
我希望这会有所帮助。