作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在关注 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>
);
problemField1
和
problemField2
,虽然我调用
getSource
就像我应该的那样,源的实际分辨率仍在使用引用第一级源取消引用。有没有办法告诉我的嵌套/内部
getSource
指向正确的“级别”?
最佳答案
我已经能够创建 嵌套 ArrayInput
与 react-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/
我是一名优秀的程序员,十分优秀!