Con i costruttori in es6, si consiglia di associare anticipatamente le funzioni, ad es.Come aggiungere argomenti al gestore eventi in ES6 Reagire quando le funzioni sono associate nel costruttore
class App extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this); // bound early
}
handleClick() {
// do stuff
}
...
}
In ES5, potremmo chiamare di solito qualcosa di simile this.handleClick.bind(this, "foo")
se abbiamo voluto conservare contesto e inviare un argomento aggiuntivo. Qual è lo schema migliore per questo con la nuova sintassi di classe in ES6 React?
Per esempio, se la mia classe sembrava il codice qui sotto, come potrei migliore accesso al "foo"
e "bar
"valori? (So che la risposta non è bind
ma questo è come ho potuto illustrare meglio il problema).
class App extends React.Component {
constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this); // bound early
}
handleClick(event, value) {
// do stuff with value ("foo" or "baz")
}
render() {
return (
<div>
<button onClick={this.handleClick.bind("foo")} /> // incorrect code
<button onClick={this.handleClick.bind("bar")} /> // incorrect code
</div>
)
}
}
Il primo argomento di '.bind' è sempre il valore' this'. Perciò tu vorresti 'this.handleClick.bind (null," foo ")'. Poiché la funzione era già associata nel costruttore, qualsiasi valore passato come primo argomento viene ignorato. –