2017-04-14 4 views
0

react docsWas bedeutet Event Pooling?

function onClick(event) { 
console.log(event); // => nullified object. 
console.log(event.type); // => "click" 
const eventType = event.type; // => "click" 

setTimeout(function() { 
console.log(event.type); // => null 
console.log(eventType); // => "click" 
}, 0); 

// Won't work. this.state.clickEvent will only contain null values. 
this.setState({clickEvent: event}); 

// You can still export event properties. 
this.setState({eventType: event.type}); 
} 

warum event ist bereits ein Objekt zunichte gemacht, können wir immer noch den Wert von event.type bekommen? bedeutet das nicht event = {type:null}?

setTimeout(function() { 
console.log(event.type); // => null 
console.log(eventType); // => "click" 
}, 0); 

warum event.type = null und eventType = 'click'?

können Sie mir jede Zeile dieses Codes beibringen? ...

Antwort

0
function onClick(event) { 
    console.log(event); // => nullified object. 
    console.log(event.type); // => "click" 

Wir können auf alle Eigenschaften von event im Handler zugreifen.

const eventType = event.type; // => "click" 

Wir kopieren event.type in eine lokale Variable. Die lokale Variable wird durch das Annullieren nicht beeinflusst.

Alles in der Funktion wird aufgerufen, wenn der Handler bereits zurückgegeben wurde, dh nachdem das Ereignis annulliert wurde.

 console.log(event.type); // => null 
     console.log(eventType); // => "click" 
    }, 0); 

So können wir nicht event.type zugreifen, da sie zunichte gemacht wird. Wir können auf eventType zugreifen, was eine lokale Variable ist und deren Inhalt nicht beeinflusst wird.

// Won't work. this.state.clickEvent will only contain null values. 
    this.setState({clickEvent: event}); 

event ist das Ereignis, das zunichte gemacht werden wird. Das Speichern seiner Referenz auf den Status wird uns nicht helfen.

// You can still export event properties. 
    this.setState({eventType: event.type}); 
} 

Speichern der event.type ist in Ordnung. Dies entspricht dem Speichern von event.type in einer lokalen Variablen. Wir kopieren den Wert in unseren internen Status, bevor er ungültig wird.

+0

Es scheint, als wäre 'console.log (e)' Asyn, aber warum ist 'console.log (e.type)' nicht? – Liuuil

+0

nach dem Ereignis gepoolt 'console.log (event.type)' === 'console.log (null.type)'? – Liuuil