Я пытаюсь использовать раскрывающееся меню внутри формы с помощью библиотеки дизайна Ant. Мне не удалось сопоставить реквизиты с полями флажков. Обновления (очевидно) не принимаются декоратором поля, так как я не знаю, как привязать меню onSelect к родительскому раскрывающемуся списку.
Цитата из документов:
Вы можете получить список меню с помощью antd.Menu и установить для него функцию обратного вызова onSelect, если вам нужно.
Но он не привязан к реквизиту. Есть идеи, как управлять этим вариантом использования?
function logSelection(value) {
console.log(value)
}
const MenuIterable = (props) => {
return (
<Menu onSelect={props.selection}>
{props.entries.map((e,i) =>
<Menu.Item>
<Checkbox checked={e.value} key={i}>
{e.name}
</Checkbox>
</ Menu.Item>
)}
</Menu>
)}
const FormFilters = Form.create({
onFieldsChange(props, changedFields) {
props.onChange(changedFields);
},
mapPropsToFields(props) {
return {
itemType: {
values: props.fields.itemType.values // [{name: "furniture", value:true}, ...]
}
};
}
})((props) => {
const { getFieldDecorator } = props.form;
return (
<Form layout="inline">
<FormItem label="">
{getFieldDecorator('itemType', {
rules: [{
required: true,
message: 'Item type required',
initialValue:props.fields.itemType.values
}],
})(
< Dropdown
trigger={['click']}
overlay={<MenuIterable selection={logSelection} entries={props.fields.itemType.values} />}
onVisibleChange={props.fields.handleDropDown.bind(props.fields.dropDowns.itemType, { value:'itemType' })}
visible={props.fields.dropDowns.itemType}
>
<a>
Item type <Icon type="down" />
</a>
</Dropdown>
)}
</FormItem>
</Form>
);
});
export default FormFilters;
Спасибо за вашу помощь!