Per qualche motivo il valore di questo si sta perdendo nel gestore eventi react. Leggendo la documentazione ho pensato che reagiscono ha fatto un po 'di roba qui per assicurarsi che questo è stato impostato sul valore correttoValore di questo nel gestore eventi React
La seguente non funziona come mi aspetto
import React from 'react';
export default class Observer extends React.Component {
handleClick() {
console.log(this); //logs undefined
}
render() {
return (
<button onClick={this.handleClick}>Click</button>
);
}
}
ma questo:
import React from 'react';
export default class Observer extends React.Component {
handleClick() {
console.log(this); //logs Observer class instance
}
render() {
return (
<button onClick={this.handleClick.bind(this)}>Click</button>
);
}
}
React e ES6 sono nuovi per me ma questo sembra non essere il comportamento corretto?
Perché non dovrebbe essere un comportamento corretto? Jsx oscura troppo la funzione che stai creando per 'onClick'? – Bergi
Questo non ha nulla a che fare con ES6. Neanche in ES5 funzionerebbe. – Bergi
@Bergi La risposta accettata dice diversamente. In ES5 utilizzeresti [React.createClass] (https://facebook.github.io/react/docs/top-level-api.html#react.createclass) e non dovresti legarti manualmente. Quindi sì, questo ha tutto a che fare con l'OP usando ES6 per creare componenti React. –