# 右键菜单 - order: 0 右键菜单示例 --- ````jsx import { Tree, Tooltip } from 'antd'; import assign from 'object-assign'; const TreeNode = Tree.TreeNode; function contains(root, n) { let node = n; while (node) { if (node === root) { return true; } node = node.parentNode; } return false; } const Demo = React.createClass({ propTypes: {}, componentDidMount() { this.getContainer(); document.body.onclick = (e) => { // console.log(e.target); if (contains(this.cmContainer, e.target)) { return; } this.componentWillUnmount(); this.toolTip = null; }; }, componentWillUnmount() { if (this.cmContainer) { ReactDOM.unmountComponentAtNode(this.cmContainer); document.body.removeChild(this.cmContainer); this.cmContainer = null; } }, onSelect(info) { console.log('selected', info); }, onRightClick(info) { console.log('right click', info); this.renderCm(info); }, onMouseLeave(info) { console.log('leave', info); }, getContainer() { if (!this.cmContainer) { this.cmContainer = document.createElement('div'); document.body.appendChild(this.cmContainer); } return this.cmContainer; }, renderCm(info) { if (this.toolTip) { ReactDOM.unmountComponentAtNode(this.cmContainer); this.toolTip = null; } this.toolTip = ( show tooltip ); const container = this.getContainer(); assign(this.cmContainer.style, { position: 'absolute', left: info.event.pageX + 'px', top: info.event.pageY + 'px', }); ReactDOM.render(

{info.node.props.title}

{this.toolTip}
, container); }, render() { return (

right click contextmenu

); }, }); ReactDOM.render(, mountNode); ````