代码并非原创,忘了从哪里找到的,如有人知道,可博客留言。
效果点击链接:
https://codepen.io/Anyicheng2015/pen/jaayMw
首先,你要对React有点了解。其次,你要明白HTML的事件处理机制。
我先贴代码的框架,然后逐步完善。
class ContextMenu extends React.Component {
constructor(props) {
super(props);
}
componentDidMount() {
}
componentWillUnmount() {
}
render() {
}
}
ReactDOM.render(<ContextMenu />, document.getElementById('root'));
鼠标右击事件,通常的‘click’事件是针对鼠标左键,mousedown是鼠标左键和右键及中间键都可以。那么有没有鼠标右键的事件呢?
有的,在HTML里面支持contextmenu事件。
https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu
添加contextmenu事件处理:
document.addEventListener('contextmenu', this._handleContextMenu);
当然也需要移除:
document.removeEventListener('contextmenu', this._handleContextMenu);
当鼠标点到其它地方,或者滚动的时候,不要显示右键菜单,需要添加其他事件。反应到代码上面:
componentDidMount() {
document.addEventListener('contextmenu', this._handleContextMenu);
document.addEventListener('click', this._handleClick);
document.addEventListener('scroll', this._handleScroll);
};
componentWillUnmount() {
document.removeEventListener('contextmenu', this._handleContextMenu);
document.removeEventListener('click', this._handleClick);
document.removeEventListener('scroll', this._handleScroll);
}
接下来 ,就是事件处理方法了:
右