Я сделал этот «Конвертер валют», чтобы получить представление о том, как работает React.React-App: Prop обновляется после следующего события
Он работает (более или менее), но результат показан со смещением:
Вы типа «1» (Евро) => Он показывает «0» доллар.
Вы печатаете «10» => Он показывает «1.1308 Доллар».
Вы печатаете «100» => Он показывает «11,308 доллара».
...
var Display = React.createClass({
render: function() {
return (
<div>
<p>{this.props.euro + ' Euro are equal to ' + this.props.dollar + ' Dollar.'}</p>
</div>
)
}
});
var Converter = React.createClass({
getInitialState: function() {
return { euro: 0, dollar: 0, exchangeRate: 1.1308 }
},
convertEuroToDollar: function() {
this.setState({ euro: +document.querySelector('#amount-euro').value });
this.setState({ dollar: this.state.euro * this.state.exchangeRate });
},
render: function() {
return (
<div>
<input type="text" id="amount-euro" onKeyUp={this.convertEuroToDollar} />
<Display dollar={this.state.dollar} euro={this.state.euro} exchangeRate={this.state.exchangeRate} />
</div>
)
}
});
ReactDOM.render(
<Converter />,
document.querySelector('#app')
);
div {
margin: 30px 50px;
}
<div id="app"></div>
Live-Demo на CodePen: http://codepen.io/mizech/pen/vGbJxe
Он должен показывать результат (евро * exchangeRate) сразу.
Что я здесь делаю неправильно?