Спасибо, что посетили мой вопрос. Я делаю простой калькулятор через реакцию.
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.2/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/15.6.2/react-dom.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<title>Task 4</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.6.1/react-dom.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.38/browser.js"></script>
</head>
<body>
<div id="calculator"/>
<script type="text/babel">
var Calculate=React.createClass({
getInitialState:function(){
return{
firstvalue: 0, secondvalue: 0, operation : "+", answer: 0
}
},
handleFirstValueChange(event)
{
var localvalue=event.target.value.replace(/\s+/g, ' ').trim()
this.setState({
firstvalue:localvalue
});
this.Answer()
},
handleSecondValueChange(event)
{
var localvalue=event.target.value.replace(/\s+/g, ' ').trim()
this.setState({
secondvalue:localvalue
})
this.Answer()
},
handleSum(event)
{
this.setState({
operation:"+",
})
this.Answer()
},
handleSub(event)
{
this.setState({
operation:"-"
})
this.Answer()
},
handleMul(event)
{
this.setState({
operation:"*"
})
this.Answer()
},
handleDiv(event)
{
this.setState({
operation:"/"
})
this.Answer()
},
Answer()
{
switch(this.state.operation)
{
case "+" :
this.setState({
answer:Number(this.state.firstvalue)+Number(this.state.secondvalue)
})
break;
case "-" :
this.setState({
answer:Number(this.state.firstvalue)-Number(this.state.secondvalue)
})
break;
case "*" :
this.setState({
answer:Number(this.state.firstvalue)*Number(this.state.secondvalue)
})
break;
case "/":
this.setState({
answer:Number(this.state.firstvalue)/Number(this.state.secondvalue)
})
break;
}
},
render:function(){
return(
<div>
<input type="text" className="search-field" onChange={this.handleFirstValueChange}/>
<input type="text" className="search-field" onChange={this.handleSecondValueChange}/>
<div/>
<button onClick={this.handleSum}>
Сложить
</button>
<button onClick={this.handleSub}>
Вычесть
</button>
<button onClick={this.handleMul}>
Умножить
</button>
<button onClick={this.handleDiv}>
Поделить
</button>
<div>{this.state.firstvalue} {this.state.operation} {this.state.secondvalue} ={this.state.answer} </div>
</div>
)}
});
ReactDOM.render(
<Calculate/>,
document.getElementById("calculator")
);
</script>
</body>
</html>
Я хочу сделать ответ, когда я редактирую первое или второе поле. Но он рендерит только после нажатия кнопки или редактирования поля снова. Я не вижу, как исправить, я думаю, что это может быть с рендером, но я вызываю функцию Answer () в этих 2 полях, и она не дает мне результата. Я пытаюсь связать Answer () с событием в рендере, но оно не дало успеха. Большое спасибо. Первые 2 scr это переполнение стека. Я хочу этот результат. Отредактируйте поле или кнопку и дайте ответ немедленно.