Menu de clic droit en utilisant React JS
j'aimerais savoir si il y a une meilleure pratique/bonne façon de configurer un menu clic-droit pour Réagir composant.
j'ai actuellement...
// 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
},
cela fonctionne, mais ça sent un peu le désordre et je me demandais s'il y avait une autre approche que je pourrais utiliser, n'importe quelle information serait grandement appréciée,
Merci!
17
demandé sur
Tom
2015-02-21 19:46:18
2 réponses
mise à jour:
Compris - voici ce que vous pouvez faire
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>
}
dans le rendu, vous pouvez passer une fonction à onContextMenu pour quand un clic droit se produit pour ce composant react.
25
répondu
Tom
2015-02-22 09:12:48
Il y a peu de choses à prendre soin avec les menus popup:
- il doit être éloigné de ses parents et de ses frères et sœurs - de préférence dans une superposition qui est le dernier enfant du document.corps
- la logique spéciale doit veiller à ce qu'elle soit toujours affichée à l'écran et jamais coupée par les bords de l'écran
- s'il y a une hiérarchie impliquée, les popups enfants doivent être alignés avec les éléments du popup précédent (opener).
j'ai créé une bibliothèque que vous pouvez utiliser pour accomplir tout cela:
7
répondu
Danko Kozar
2016-08-15 01:47:17