Извините за простоту этого вопроса, я новичок в React. Я построил калькулятор с двумя полями ввода и кнопками для выполнения различных расчетов. Теперь я превращаю его в более полнофункциональный калькулятор с целой клавиатурой. В моем коде, приведенном ниже, я почти уверен, что проблема заключается в том, как написана функция onClick, но я не уверен, как она должна быть написана. (большая часть кода в образце связана с начальным проектом и не имеет отношения к этому вопросу, я просто хотел включить весь компонент для хорошей оценки.)
Когда я нажимаю на «1 ", консоль регистрирует 1 в первый раз, но 1 вверху страницы не отображается до второго щелчка. Что у меня здесь происходит, что не позволяет отображать один вверху, пока я не нажму кнопку «1» во второй раз?
Первый щелчок: Приложение после первого щелчка по 1
Второй щелчок: Приложение после второго щелчка по 1
class Calculator extends React.Component {
constructor(props) {
super(props);
this.setNum1 = this.setNum1.bind(this);
this.setNum2 = this.setNum2.bind(this);
this.add = this.add.bind(this);
this.subtract = this.subtract.bind(this);
this.multiply = this.multiply.bind(this);
this.divide = this.divide.bind(this);
this.clear = this.clear.bind(this);
this.buttonPressed = this.buttonPressed.bind(this);
this.state = {
pressed: "",
result: "",
num1: "",
num2: "",
};
}
buttonPressed(e) {
e.preventDefault();
const pressed = e.target.name;
const result = this.state.pressed;
this.setState({ pressed });
this.setState({ result });
console.log(e.target.name);
}
setNum1(e) {
const num1 = e.target.value ? parseInt(e.target.value) : "";
this.setState({ num1 });
}
setNum2(e) {
const num2 = e.target.value ? parseInt(e.target.value) : "";
this.setState({ num2 });
}
add(e) {
e.preventDefault();
const result = this.state.num1 + this.state.num2;
this.setState({ result });
}
subtract(e) {
e.preventDefault();
const result = this.state.num1 - this.state.num2;
this.setState({ result });
}
multiply(e) {
e.preventDefault();
const result = this.state.num1 * this.state.num2;
this.setState({ result });
}
divide(e) {
e.preventDefault();
const result = this.state.num1 / this.state.num2;
this.setState({ result });
}
clear(e) {
e.preventDefault();
this.setState({ num1: "", num2: "", result: 0 });
}
render() {
const { num1, num2, result } = this.state;
return (
<div>
<h1>{this.state.result}</h1>
<input onChange={this.setNum1} value={num1}></input>
<input onChange={this.setNum2} value={num2}></input>
<br />
<button name="1" onClick={this.buttonPressed}>
1
</button>
<button onClick={this.add}>+</button>
<button onClick={this.subtract}>-</button>
<button onClick={this.multiply}>x</button>
<button onClick={this.divide}>/</button>
<button onClick={this.clear}>clear</button>
</div>
);
}
}
export default Calculator;
Если кто-нибудь может помочь мне узнать, что мне нужно сделать, чтобы исправить эту ситуацию, я был бы очень признателен!