gpt4 book ai didi

javascript - 如何在 react-admin 中的 Nested ArrayInput/FormDataConsumer 中调用 getSource

转载 作者:行者123 更新时间:2023-12-04 13:38:33 25 4
gpt4 key购买 nike

我正在关注 this使用文档 FormDataConsumer显示/隐藏输入。但我有一个嵌套的 ArrayInput/FormDataConsumer 如下:

export const MyClassCreate = ({ permissions, ...props }) => (
<Create {...props}>
<TabbedForm>
<FormTab label="summary">
<SelectInput source="className" choices={choices} optionText="choiceType"
optionValue="className"disableValue="not_available"
/>
<TextInput source="field1" />
<NumberInput source="field2" />
<FormDataConsumer>
{({ formData, ...rest }) =>
formData.className === "my.package.MyClass2" && (
<TextInput source="field3" {...rest} />
)
}
</FormDataConsumer>
<FormDataConsumer>
{({ formData, ...rest }) =>
formData.className === "my.package.MyClass1" && (
<Fragment>
<NumberInput source="field4" {...rest} />
<ArrayInput source="arrayField1">
<SimpleFormIterator>
<SelectInput source="field5.subField6" choices={choices}
optionText="choiceType"
optionValue="className"
disableValue="not_available"
/>
<TextInput source="field5.subField7" />
<FormDataConsumer>
{({ formData, scopedFormData, getSource, ...rest }) =>
scopedFormData.field5 &&
scopedFormData.field5.subField8 &&
scopedFormData.field5.subField8 ===
"my.package.MyClass3" && (
<NumberInput
source={getSource("field5.subField9")}
{...rest}
/>
)
}
</FormDataConsumer>
<FormDataConsumer>
{({ formData, scopedFormData, getSource, ...rest }) =>
scopedFormData.field5 &&
scopedFormData.field5.subField8 &&
scopedFormData.field5.subField8 ===
"my.package.MyClass4" && (
<ArrayInput source={getSource("reward.rewards")}>
<SimpleFormIterator>
<SelectInput source={getSource("problemField1")} choices={choices}
optionText="choiceType" optionValue="className"
disableValue="not_available"
/>
<TextInput source={getSource("problemField2")} />
<FormDataConsumer>
{({
formData,
scopedFormData,
getSource,
...rest
}) =>
scopedFormData.field8 &&
scopedFormData.field8 ===
"my.package.MyClass5" && (
<NumberInput
source={getSource("field8")}
{...rest}
/>
)
}
</FormDataConsumer>
</SimpleFormIterator>
</ArrayInput>
)
}
</FormDataConsumer>
</SimpleFormIterator>
</ArrayInput>
</Fragment>
)
}
</FormDataConsumer>
</FormTab>
<FormTab label="campaign">
<DateInput source="startTime" parse={dateParser} />
<DateInput source="expirationTime" parse={dateParser} />
</FormTab>
</TabbedForm>
</Create>
);


我的问题是在 problemField1problemField2 ,虽然我调用 getSource就像我应该的那样,源的实际分辨率仍在使用引用第一级源取消引用。有没有办法告诉我的嵌套/内部 getSource指向正确的“级别”?

最佳答案

我已经能够创建 嵌套 ArrayInputreact-admin这是一个简单的例子:

const NavBarInput = ({ source }) => (
<Box>
<ArrayInput source={source}>
<SimpleFormIterator>
<TextInput source="title" />
<FormDataConsumer>
{({ getSource }) => (
<NavBarInput source={getSource?.('items')} />
)}
</FormDataConsumer>
</SimpleFormIterator>
</ArrayInput>
</Box>
);

关于javascript - 如何在 react-admin 中的 Nested ArrayInput/FormDataConsumer 中调用 getSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60343419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com