Javascript 反应:onChange不更新输入字段的值

Javascript 反应:onChange不更新输入字段的值,javascript,reactjs,Javascript,Reactjs,我正在写一页,把温度从摄氏度转换成华氏度 用户在第一个输入字段中以celcius为单位给出温度, 然后onChange应该调用convertexlciustofahr函数 convertCelciustoFahr通过函数this.setState()更改state.fahrenheit,以华氏为单位的温度应更新到第二个输入字段 class App extends Component { constructor(props){ super(props); this.state = {

我正在写一页,把温度从摄氏度转换成华氏度

用户在第一个输入字段中以celcius为单位给出温度, 然后onChange应该调用convertexlciustofahr函数

convertCelciustoFahr通过函数this.setState()更改state.fahrenheit,以华氏为单位的温度应更新到第二个输入字段

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中,你传递事件处理程序的函数名没有括号。看起来你是对的。可能吧相关的: