演示:jsfiddle
/**
* @jsx React.DOM
*/
var NumberField = React.createClass({
render: function() {
return <input type="number" value={this.props.value} onInput={this.onInput}/>;
},
onInput: function(e) {
if (!this.props.onValueChange) {
return;
}
var value = parseInt(e.target.value, 10);
return this.props.onValueChange(value);
}
});
var TempConverter = React.createClass({
getInitialState: function() {
return {c: 0};
},
render: function() {
var c = this.state.c;
return <p>
<NumberField onValueChange={this.onChangeC} value={c}/> C
<br/>
<NumberField onValueChange={this.onChangeF} value={c2f(c)}/> F
</p>;
},
onChangeC: function(c) {
this.setState({c: c});
},
onChangeF: function(f) {
this.setState({c: f2c(f)});
}
});
function c2f(c) {
return 1.8 * c + 32;
}
function f2c(f) {
return 0.5555555555555 * (f - 32);
}
当我将 °F 值更改为 1 时,它会转换为摄氏温度,然后再转换回华氏温度,从而导致舍入误差。
有什么办法可以避免对当前修改的元素进行更新?