我正在尝试使用 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;
谢谢你的帮助!