Javascript 反应:onChange不更新输入字段的值
我正在写一页,把温度从摄氏度转换成华氏度 用户在第一个输入字段中以celcius为单位给出温度, 然后onChange应该调用convertexlciustofahr函数 convertCelciustoFahr通过函数this.setState()更改state.fahrenheit,以华氏为单位的温度应更新到第二个输入字段Javascript 反应:onChange不更新输入字段的值,javascript,reactjs,Javascript,Reactjs,我正在写一页,把温度从摄氏度转换成华氏度 用户在第一个输入字段中以celcius为单位给出温度, 然后onChange应该调用convertexlciustofahr函数 convertCelciustoFahr通过函数this.setState()更改state.fahrenheit,以华氏为单位的温度应更新到第二个输入字段 class App extends Component { constructor(props){ super(props); this.state = {
class App extends Component {
constructor(props){
super(props);
this.state = {
//Temperature in fahrenheit
fahrenheit: 0,
//Temperature in celcius
celcius: 0,
};
//Binding
this.convertCelciustoFahr = this.convertCelciustoFahr.this;
}
//Converts celcius to fahrenheit
convertCelciustoFahr(event){
var celcius = Number(event.target.value);
this.setState( function(state,props){
return{
fahrenheit: (celcius-32)/(5/9),
}
}
)
}
render() {
return (
<div className="App">
<h1>Celcius to Fahrenheit converter</h1>
<form id="conversion">
<input className="Celcius" placeholder="°C" onChange={this.convertCelciustoFahr} />
<p>=</p>
<input className="Fahrenheit" value={this.state.fahrenheit} placeholder="°F" />
</form>
</div>
);
}
}
export default App;
类应用程序扩展组件{
建造师(道具){
超级(道具);
此.state={
//华氏温度
华氏:0,
//塞尔西乌斯温度
塞尔修斯:0,
};
//装订
this.convertCelciustoFahr=this.convertCelciustoFahr.this;
}
//将摄氏度转换为华氏度
convertCelciustoFahr(事件){
var celcius=编号(事件.目标.值);
this.setState(函数(状态、道具){
返回{
华氏温度:(摄氏32度)/(5/9度),
}
}
)
}
render(){
返回(
Celcius至华氏转换器
=
);
}
}
导出默认应用程序;
以下是html:
<body>
<noscript>
You need to enable JavaScript to run this app.
</noscript>
<div id="root">
<div data-reactroot="" class="App">
<h1>Celcius to Fahrenheit converter</h1>
<form id="conversion">
<input class="Celcius" placeholder="°C">
<p>=</p>
<input class="Fahrenheit" value="0" placeholder="°F">
</form>
</div>
</div>
您需要启用JavaScript才能运行此应用程序。
Celcius至华氏转换器
=
似乎没有启用Javascript,也没有触发onChange事件
为什么不将值更新到华氏输入字段?使用
this.convertCelciustoFahr = this.convertCelciustoFahr.bind(this);
-1因为“您可以使用箭头功能,因为它会自动绑定到此”是错误的。箭头函数不“绑定”因为他们没有
这个
。嗨@Chris是的,你是对的,我没有正确解释,所以我更新了我的答案:)应该是箭头函数绑定到它们当前上下文的词法上,这不是事实,因为在JSX中,你传递事件处理程序的函数名没有括号。看起来你是对的。可能吧相关的: