Je suis en train de créer un petit utilitaire où j'ai besoin d'appeler une setState
reporté au prochain tick déclenché par l'entrée onChange
manipulateur. Ci-dessous, un simple extrait montrant le concept de base.
https://jsfiddle.net/samuelsimoes/q3p44sz1/
class MyComponent extends React.Component {
constructor () {
super(...arguments);
this.state = {};
}
onChange (value) {
setTimeout(v => {
this.setState({ name: v });
}.bind(this, value), 0);
}
render () {
return (
<div>
<input
type="text"
value={this.state.name}
onChange={evt => this.onChange(evt.target.value)} />
</div>
);
}
};
ReactDOM.render(
<MyComponent/>,
document.getElementById("app-container")
);
Si vous exécutez cet extrait dans un navigateur sous Mac OS et que vous essayez de taper une lettre avec un accent, vous obtiendrez un comportement bizarre, différent pour chaque navigateur. Sur Chrome l'accent ne fonctionne que la première fois, après l'accent n'est plus appliqué (regardez le gif ci-dessous). Sur Firefox, l'accent et la lettre n'apparaissent pas.
Vous avez une idée de ce que c'est ?
p.s. : J'ai testé ce comportement sur React 0.13, 0.14 et 15.0.2.