React-Admin- ArrayInput/SimpleFormIterator- 如何识别当前记录并将其传递给自定义组件
React-Admin- ArrayInput/SimpleFormIterator- How to identify and pass current record to custom component
当数组中有多个记录时,我在访问和传递我正在使用的当前记录时遇到问题:
例如:参见下面的 json:整个数组 salesoutdet 正在传递,而不管我在哪个索引上。
{
"id":1
"salesoutdet": [
{
"unitprice": 10,
"quantity": 5,
"total": 50
},
{
"unitprice": 2,
"quantity": 1,
"total": 2
}
]
}
请参阅下面的 ArrayInput。自定义组件 (TotalField) 已嵌入。这应该只传递当前记录,但它传递了 SimpleFormIterator 的所有记录。请问我怎样才能做到这一点?
<ArrayInput source="salesoutdet" validate={[required()]}>
<SimpleFormIterator>
<ReferenceInput label="Sku" source="sku" reference="products">
<SelectInput optionText="name" />
</ReferenceInput>
<NumberInput label="Quantity" source="quantity" />
<NumberInput label="Unit Price" source="unitprice" />
<FormDataConsumer>
{({
formData, // The whole form data
scopedFormData, // The data for this item of the ArrayInput
getSource, // A function to get the valid source inside an ArrayInput
...rest
}) => {
//console.log(`getSource: ${JSON.stringify(scopedFormData)}`)
return scopedFormData ? <TotalField source={getSource('total')} record={scopedFormData} {...rest} /> : null;
}}
</FormDataConsumer>
</SimpleFormIterator>
</ArrayInput>
这是它实际工作的方式。
scopedFormData
包含数组范围内的所有记录。这就是为什么您必须通过 getSource
处理程序传递 source
以便在每次迭代时分配正确的数组索引。
你的问题到底是什么?
如果您在显示正确数据方面需要进一步帮助,请向我们提供 TotalField
组件。
当数组中有多个记录时,我在访问和传递我正在使用的当前记录时遇到问题:
例如:参见下面的 json:整个数组 salesoutdet 正在传递,而不管我在哪个索引上。
{
"id":1
"salesoutdet": [
{
"unitprice": 10,
"quantity": 5,
"total": 50
},
{
"unitprice": 2,
"quantity": 1,
"total": 2
}
]
}
请参阅下面的 ArrayInput。自定义组件 (TotalField) 已嵌入。这应该只传递当前记录,但它传递了 SimpleFormIterator 的所有记录。请问我怎样才能做到这一点?
<ArrayInput source="salesoutdet" validate={[required()]}>
<SimpleFormIterator>
<ReferenceInput label="Sku" source="sku" reference="products">
<SelectInput optionText="name" />
</ReferenceInput>
<NumberInput label="Quantity" source="quantity" />
<NumberInput label="Unit Price" source="unitprice" />
<FormDataConsumer>
{({
formData, // The whole form data
scopedFormData, // The data for this item of the ArrayInput
getSource, // A function to get the valid source inside an ArrayInput
...rest
}) => {
//console.log(`getSource: ${JSON.stringify(scopedFormData)}`)
return scopedFormData ? <TotalField source={getSource('total')} record={scopedFormData} {...rest} /> : null;
}}
</FormDataConsumer>
</SimpleFormIterator>
</ArrayInput>
这是它实际工作的方式。
scopedFormData
包含数组范围内的所有记录。这就是为什么您必须通过 getSource
处理程序传递 source
以便在每次迭代时分配正确的数组索引。
你的问题到底是什么?
如果您在显示正确数据方面需要进一步帮助,请向我们提供 TotalField
组件。