我正在尝试添加一个自定义的右键菜单组件到菜单项。我可以通过常量来完成,但是当我用组件来完成时,样式似乎会出错。有什么想法吗?
工作示例:https://codesandbox.io/s/m5n31opx2j
我的自定义菜单:
import React from "react";
import ReactDOM from "react-dom";
import Dropdown from "antd/lib/dropdown";
import Menu from "antd/lib/menu";
import "antd/dist/antd.css";
export default class MyMenu extends React.Component {
render() {
return (
<Menu>
<Menu.Item
onClick={e => {
alert("clicked");
}}
>
click
</Menu.Item>
<Menu.Item>Like it</Menu.Item>
<Menu.Item>Bookmark</Menu.Item>
</Menu>
);
}
}
我的主要成分:
import React from "react";
import ReactDOM from "react-dom";
import Dropdown from "antd/lib/dropdown";
import Menu from "antd/lib/menu";
import "antd/dist/antd.css";
import MyMenu from "./MyMenu";
const menu = (
<Menu>
<Menu.Item
onClick={e => {
alert("clicked");
}}
>
click
</Menu.Item>
<Menu.Item>Like it</Menu.Item>
<Menu.Item>Bookmark</Menu.Item>
</Menu>
);
class App extends React.Component {
render() {
return (
<div>
<Menu mode="horizontal">
<Menu.Item
key="1"
onClick={() => {
alert("parent clicked");
}}
>
<Dropdown overlay={menu} trigger={[`contextMenu`]}>
<span style={{ userSelect: "none" }}> from const </span>
</Dropdown>
</Menu.Item>
<Menu.Item
key="2"
onClick={() => {
alert("parent clicked");
}}
>
<Dropdown overlay={<MyMenu />} trigger={[`contextMenu`]}>
<span style={{ userSelect: "none" }}> from component </span>
</Dropdown>
</Menu.Item>
</Menu>
</div>
);
}
}
const APP_NODE = document.getElementById(`container`);
ReactDOM.render(<App />, APP_NODE);
2条答案
按热度按时间5uzkadbs1#
这是因为在component中你用react类 Package 了
Menu
,并且你失去了对antdDropdown
组件的继承。因此,您需要将
Menu
直接传递给Dropdown
组件的overlay
属性,就像使用常量menu
时所做的那样:这就是组件的工作原理。
要继续使用自定义组件方法,您需要在
MyMenu
组件中包含Dropdown
,以便将Menu
直接传递给overlay
prop:希望这个有用。
在这里,您可以直接在源代码中看到这是如何完成的:www.example.comhttps://github.com/ant-design/ant-design/blob/557683c7644d2aef1e2df0490815b294b063d457/components/dropdown/dropdown.tsx#L74
8oomwypt2#
使用下方样式的下拉组件
给出以下警告
警告:[和:下拉列表]
overlay
已弃用。请改用menu
。请建议正确的使用方法