javascript – 使用React JS右键单击菜单

我想知道是否有一个最佳实践/正确的方式来设置React组件的右键单击菜单.

我目前有这个…

// nw is nw.gui from Node-Webkit
componentwillMount: function() {
    var menu = new nw.Menu();
    menu .append(new nw.MenuItem({
        label: 'doSomething',click: function() {
            // doSomething
        }
    }));

    // I'd like to kNow if this bit can be done in a cleaner/more succinct way...
    // BEGIN
    var that = this;
    addEventListener('contextmenu',function(e){
        e.preventDefault();
        // Use the attributes property to uniquely identify this react component 
        // (so different elements can have different right click menus)
        if (e.target.attributes[0].nodeValue == that.getDOMNode().attributes[0].nodeValue) {
            menu.popup(e.x,e.y);
        }
    })
    // END
},

这有效,但感觉有点混乱,我想知道是否有另一种方法我可以使用,任何信息将不胜感激,

谢谢!

解决方法

更新:

看出来 – 这是你可以做的

var addMenu;

componentwillMount: function() {
    addMenu = new nw.Menu();
    addMenu.append(new nw.MenuItem({
        label: 'doSomething',click: function() {
            // doSomething
        }
    }));
},contextMenu: function(e) {
    e.preventDefault();
    addMenu.popup(e.clientX,e.clientY);
},render: function(){
    return <button onClick={this.handleClick} onContextMenu={this.contextMenu}>SomethingUseful</button>
}

在渲染中,您可以将函数传递给onContextMenu,以便在此反应组件发生右击时.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...