I have 4 input fields where I am entering the amount and based on that amount I am getting the rate.
Scenario: when user is filling in the field, for example inputing 20000 in input1 the rate has to be 116.04 but instead of that user gets 11.60. So there is an obvious delay of 1 character and as soon as I put 0 in the input2 field I get the correct rate which is 116.04 This is not acceptable for me as I have 4 fields overall and numbers are always different. How can I fix it??? This is my state:
this.state = {
input: {
amount: '20000',
inputField1: '',
inputField2: '',
inputField3: '',
inputField4: '',
...window.input,
},
These are my input fields:
<Input className="col-8"
value={this.state.input.inputField1}
onChange={(event) => {
this.updateInputField("inputField1", event.target.value);
}}/>
<Input className="col-8"
value={this.state.input.inputField2}
onChange={(event) => {
this.updateInputField("inputField2", event.target.value);
}}/>
<Input className="col-8"
value={this.state.input.inputField3}
onChange={(event) => {
this.updateInputField("inputField3", event.target.value);
}}/>
<Input className="col-8"
value={this.state.input.inputField4}
onChange={(event) => {
this.updateInputField("inputField4", event.target.value);
}}/>
These are my methods:
updateInput = (key, value) => {
let input = {...this.state.input};
input[key] = value;
window.input = input;
this.calculate(input);
};
updateInputField= (key, value) => {
let {input} = this.state;
let sum = +input.inputField1 + +input.inputField2 + +input.inputField3 + +input.inputField4
input[key] = value;
this.setState({input});
window.input = input;
this.updateInput("amount",sum)// this is where I am getting the delay
};
I am trying to should the total Amount using this state:
<p>{this.state.input.amount}</p>