私は以前にこの質問Stacking of Context Menus in Electronを書いてcontext menu module for electronにこの問題を作成しました。電子メールで文脈メニューの登録者を登録解除する方法
私の質問は非常に詳細ですが、回答はありません。次に、@sindresorhus私はStackOverflowでこの質問をすることをお勧めします:
どのように私は電子メールの登録を解除するのですか?第二は、その後、私は別の領域を右クリックしたときに、しかし
handleContextMenu() {
this.props.contextMenu({
prepend: (params, browserWindow) => [{
label: `Summary ${this.state.msn}`,
click:() => this.createSummary()
},{
label: `Library Compare ${this.state.msn}`,
click:() => this.runLibCompare()
},{
label: `Visualize ${this.state.msn}`,
click:() => dialog.showMessageBox({
type: 'question',
buttons: this.vizButtons,
defaultId: 0,
title: `Choose your visualization`,
message: `Choose your visualization for ${this.state.msn}.`,
}, res => this.visualize(res))
}]
});
};
、最初のコンテキストメニューがポップアップし、:私はあなたがクリックした場所に応じて、異なるコンテキストメニューが表示されます、これでプログラムを持っています現在のコンテキストメニューが表示されるまで
私は基本的に、コンテキストメニューが終了した後で登録を解除したいと思っています。それ、どうやったら出来るの?
更新: は、コンテキストメニューを取り除くと、単にhandleContextMenu
機能にこれを与え得た:
handleContextMenu = menuItems => {
const menu = new electron.remote.Menu();
menu.append(new electron.remote.MenuItem(menuItems));
menu.popup(electron.remote.getCurrentWindow());
}
そして、それは働きます!つまり、電子文脈メニューもなくなりました。
いいえ私のコードをあなたの正確な提案に置き換えましたが、まだスタッキング効果を得ています..今度はnといいます... n-1 ... 3 ... 2 ... 1 –
私はイベントからメニューを削除する方法を考え出す必要がありますか? –
ああ待って...私はそれを得たと思う。私はwindow.addEventListenerを削除し、それは繰り返されていないようです。私にこれをもう少し肉でさせてください –