2015-08-22 10 views
5

Nella pagina Suggerimenti di React di Facebook Communicate Between Components viene mostrato un esempio utilizzando bind() di javascript per passare argomenti al metodo handleClick() del genitore.Reagisce al binding e mantiene l'accesso all'oggetto evento?

Questo funziona bene, tranne che l'utilizzo del binding del primo argomento di un gestore di eventi non è più l'evento che è stato attivato. Mi piacerebbe ancora accedere all'evento, quindi quali sono le mie opzioni in merito?

+2

'onClick = {e => this.handleClick (e, i)}' – zerkms

+0

Impressionante, ha funzionato perfettamente. Ora posso impedire il default sull'evento e avere accesso a e.target :) Poiché si tratta di un commento, non posso comunque contrassegnarlo come risposta. – Sgraffite

risposta

3

Basta specificare come

onClick={e => this.handleClick(e, i)} 

In questo modo si crea una nuova funzione anonima che tanto passa l'evento originale ed i vostri dati personalizzati.

+0

senza ES6 come scriverlo? function (e) { return this.handleClick (e, i); } ? –

+0

@ FrançoisRichard no, è necessario acquisire 'this' da qualche parte al di fuori di questa funzione anonima come' var that = this; 'e quindi usare 'that' all'interno di – zerkms

+0

così function (e) {var self = this; return self.handleClick (e, i); } funzionerebbe correttamente? –

Problemi correlati