添加两个没有动作按钮的数字react.js

时间:2019-01-09 12:47:53

标签: javascript reactjs

import React, { Component } from 'react';

class App extends React.Component{
    constructor(){
        super();
        this.state ={
            num1 : 0,
            num2 : 0,
            result :0,
    }
    this.updateNum1=this.updateNum1.bind(this);
    this.updateNum2=this.updateNum2.bind(this);
    this.updateResult=this.updateResult.bind(this);
    };

    updateNum1(data){
        this.setState({
            num1 : data.target.value
        });
    }

    updateNum2(data){
        this.setState({
            num2 : data.target.value
        });
    }

    updateResult(){
    this.setState({
        result : parseInt(this.state.num1)+parseInt(this.state.num2)
    });
    }


    render(){
        return(
            <div>
                <input type ="number"  value={this.state.num1} 
                onChange = {this.updateNum1} />
                <input type ="number"  value={this.state.num2} 
                onChange = {this.updateNum2} />


                {/* <button onClick ={this.updateResult} >Add</button> 
     */}


                <h1>{this.state.result}</h1>
            </div>
        );
    }   
}
export default App;

///不带操作按钮的两个数字加// 我想不使用按钮就将两个数字相加 1

我正在尝试通过在输入字段中使用默认值来添加两个数字。如何在没有“添加”按钮的情况下添加两个数字。例如,如果用户将num1的值从0更改为4,则它应更新加4号值的值(num1 = 4 + num2 = 0 =结果4)。它应该自动更新第三个输入字段值或其中包含结果值的文本。

4 个答案:

答案 0 :(得分:2)

您不必将结果存储在您的状态中,因为您可以根据当前状态进行计算:

class App extends React.Component {
  constructor() {
    super();

    this.state ={
      num1 : 0,
      num2 : 0,
    }
  }

  updateNum1(event) {
    this.setState({
      num1: event.target.value
    });
  }

  updateNum2(event){
    this.setState({
      num2: event.target.value
    });
  }

  render() {
    const { num1, num2 } = this.state;

    const total = parseInt(num1) + parseInt(num2);

    return (
      <div>
        <input
          type='number'
          value={num1}
          onChange={this.updateNum1.bind(this)}
        />
        <input
          type='number'
          value={num2}
          onChange={this.updateNum2.bind(this)}
        />

        <h1>{total}</h1>
      </div>
    );
  );
}   

答案 1 :(得分:0)

您可以在更新num1或num2状态时简单地设置结果状态。

updateNum1(data){
  this.setState({
    num1 : data.target.value,
    result: data.target.value + this.state.num2
  });
}

您也将对updateNum2方法执行相同的操作。

或者除了具有结果状态外,还可以将它们都动态添加到jsx中。

<h1>Result: {this.state.num1 + this.state.num2}</h1>

代替

<h1>{this.state.result}</h1>

答案 2 :(得分:0)

您可以使用:

<h1>{this.state.num1 + this.state.num2 }</h1>

答案 3 :(得分:0)

如果要保留现有的组件结构,可以在updateResultupdateNum1中设置状态时,向回调函数updateNum2添加一个调用作为回调。

例如

updateNum1(data){
    this.setState({
        num1 : data.target.value
    }, this.updateResult);
}

updateNum2(data){
    this.setState({
        num2 : data.target.value
    }, this.updateResult);
}

状态更新后,它将调用updateResult