2016-05-04 3 views
0

binde ich ein ein Ereignis auf diese Weise:Bind Umfang Event-Handler, aber halten ursprüngliche Argument

render() { 
    return <button onClick={this.click.bind(this)}>click me</button> 
} 

Aber ich würde das ursprüngliche Argument der onClick Ereignis abrufen müssen.

click(evt) { 
    // evt is undefined here 
    this.setState({ evt: evt }) 
} 

Wie kann ich diesen Code arbeiten lassen?

+0

was ist das ursprüngliche Argument ? 'evt.target'? 'das'? –

+0

nur 'evt', das Standard-Argument, das vom 'onClick'-Ereignis-Listener übergeben wird –

+0

Also, was passiert jetzt? Ist "evt" nicht definiert? –

Antwort

1

Um die e aus dem Click-Ereignis propagieren Sie in einer anderen Funktion wickeln kann:

render() { 
    return <button onClick={function(e) { this.click(e)}.bind(this)}>click me</button> 
} 

Alternativ können Sie Pfeil-Funktionen verwenden, wenn Sie sind in ES6:

render() { 
    return <button onClick={(e) => { this.click(e)}}>click me</button> 
} 
+0

würde '' '' nicht innerhalb der Wrapper-Funktion der Kontext der Funktion sein und nicht von meiner React-Komponente? –

+0

Deshalb ist die Umbruchfunktion gebunden. 'Funktion (e) {this.click (e)}. bind (this)' –

+0

ah ja Entschuldigung Ich habe die Klammern gemischt –