2017-07-20 4 views
1

Ich schaute auf den Beitrag When do I need to call removeEventListener in my components?, aber es ging nicht auf meine Frage.Muss ich EventListener bei Pause und AddEventListener bei Wiedergabe entfernen?

habe ich gehört, dass seine beste Praxis removeEventListener auf Pause und addEventListener auf Spiel, um im Einklang (mit anderen Komponenten) click Funktionalität zu erhalten, während der Inspektor A-Frame verwendet wird. So würde der Code wie folgt aussehen:

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) 
    } 
}) 

Es scheint mir, dass, wenn der A-Frame-Inspektor richtig, dies zu tun arbeiten muss, dann sollte es das für mich zu behandeln, anstatt, mir tut es für jeden Event Listener Ich füge hinzu. Gibt es einen Vorteil für diese Behauptung?

Abgesehen vom A-Frame-Inspektor-Aspekt könnte es eine Situation geben, in der Code, der in einem Event-Handler ausgeführt wird, während die Szene teilweise initialisiert oder teilweise zerstört wird, schwer zu diagnostizierende Fehler verursacht?

Antwort

0

Die wichtigen Stücke sind:

  1. , dass die Veranstaltung Zuhörer gereinigt bekommen, nachdem das Unternehmen oder aus der Szene abgelöst entfernt wird. Wenn Entitäten entfernt werden, wird nicht nur der Handler .remove aufgerufen, sondern auch der Handler .pause.

  2. Ja, so dass die Ereignislistener nicht ausgeführt werden, wenn der Inspector geöffnet ist. Dies ist im Kontext einer Anwendung möglicherweise nicht so wichtig, aber sinnvoll, wenn Sie eine verallgemeinerte Komponente bereitstellen, bei der Personen den Inspektor verwenden können, um herumzustöbern.

Auf jedem Fall, wenn Sie Ereignis-Listener hinzufügen gehen, könnte man genauso gut .play und .pause verwenden. Es tut nicht weh und stellt sicher, dass die Dinge in jedem Fall sauber laufen.

Verwandte Themen