2017-07-20 11 views
1

私はポストWhen do I need to call removeEventListener in my components?を見ましたが、私の質問には答えませんでした。pauseおよびaddEventListenerでremoveEventListenerを再生する必要がありますか?

私は(他のコンポーネントへの)一貫性の維持のために一時停止し、遊びに addEventListenerremoveEventListenerへのベストプラクティスと聞きました

click機能A-フレームインスペクタを使用しています。したがって、あなたのコードは次のようになります。

AFRAME.registerComponent('my-component', { 
    init: function() { 
    this.doSomething = function() { 
     console.log("I'm doing it") 
    } 
    }, 
    play: function() { 
    this.el.addEventListener('click', this.doSomething) 
    }, 
    pause: function() { 
    this.el.removeEventListener('click', this.doSomething) 
    } 
}) 

A-フレームインスペクタが、これは正常に動作するために行われる必要があるならば、それは作るのではなく、私のためにこれを扱うべきであると私には思える私はすべてのためにそれを行いますイベントリスナーを追加します。この主張にはメリットはありますか? A-フレームインスペクタ側面以外

は、シーンが部分的に初期化または部分的に破壊されている間、イベントハンドラ内で実行されるコードは、ハードのバグを診断する可能性があり、状況はありだろうか?

答えて

0

重要な部分は、以下のとおりです。エンティティが削除またはシーンから切り離された後にイベントリスナーがクリーンアップ得ることを

  1. 。エンティティが削除されると、.removeハンドラが呼び出されるだけでなく、.pauseハンドラも呼び出されます。

  2. はい、そうインスペクタが開いているときにイベントリスナーが実行されません。これはアプリケーションのコンテキスト内ではそれほど重要ではないかもしれませんが、人がInspectorを使用して一般的なコンポーネントを共有している場合は実装するのに便利です。いずれの場合においても

あなたはイベントリスナーを追加するつもりなら、あなたにも.play.pauseを使用する場合があります。それは傷つくことはありませんし、すべての事がきれいに実行されることを確認します。

関連する問題