Antデザインライブラリを使用して、フォーム内のドロップダウンメニューを使用しようとしています。私は小道具のフィールドに小道具をマッピングすることはできませんでした。私が親のドロップダウンにonSelectをバインドする方法を知らないので、更新は(明らかに)フィールドデコレータによって行われません。Antdフォームのドロップダウンメニューにpropsをマップするにはどうすればよいですか?
引用ドキュメントは:
あなたは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;
ありがとうございました!
私は同じコンテナによって管理されるいくつかのドロップダウンを持っているので、私はvisibleとonVisibleChangeを外部値にバインドしました。ドロップダウンを開くと、他のものを閉じる必要があります! – Thook