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)。它应该自动更新第三个输入字段值或其中包含结果值的文本。
答案 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)
如果要保留现有的组件结构,可以在updateResult
和updateNum1
中设置状态时,向回调函数updateNum2
添加一个调用作为回调。
例如
updateNum1(data){
this.setState({
num1 : data.target.value
}, this.updateResult);
}
updateNum2(data){
this.setState({
num2 : data.target.value
}, this.updateResult);
}
状态更新后,它将调用updateResult