現在、私はVueを電子アプリケーション内で使用しています。 Vueのマスターコンポーネント内には複数の子供がいる可能性があります。それぞれの子はそうのように、電子の主要なプロセスで放送されることがあります信号に耳を傾け:Vueコンポーネント内のElectronのipcRendererメッセージのリスニング
export default {
...
created() {
ipcRenderer.on('set-service-status', (e, data) => {
// something with the data
})
}
...
}
しかし11個の以上の子コンポーネントがある場合、ノードは、エラーMaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 set-service-status listeners added. Use emitter.setMaxListeners() to increase limit
をスローします。複数のイベントリスナーが設定されているので、これは意味があります。コンポーネントごとに1つです。
どうすれば解決できますか?私はちょうどマスターコンポーネント内のset-service-status
信号を聞いて、次にVueのイベントシステムを使ってメッセージを子どもたちにさらに伝えるべきですか?それとも、これに対処するより良い方法がありますか?
あなたは、私がここに状態マネージャとしてvuex使用していることを想定しています。そうではありません。私は、信号が受信されると、ビジュアルアップデート(ローダーの表示)を実行したいだけです。それにはvuexを導入することが含まれていれば問題ありませんが、少し複雑になります。状態マネージャーに明示的に依存することなくこれを行う簡単な方法はありますか? – Maarten
もう一つの方法を更新しましたが、それはちょっとハッキリしています。ルートコンポーネントを強制的に更新すると、複数の 'ipcRenderer'メッセージが再び始まるからです。 'Devtron'ツールで確認できます - IPCチャンネル – Necmttn
私は実際にマスターコンポーネントに1つのリスナーを置いていることを考えていましたが、さらに子供たちの下でvueイベントをブロードキャストするようにしました:' Vue。$ root。$ emit( ' set-service-status '、componentId) 'を実行します。 'config-service-status '、(id)=> {//コンポーネントidがブロードキャストされたidと一致するかどうかを確認してから何か}})' – Maarten