@sergemin

Почему код работает с опозданием в один шаг? Где ошибка?

Пишу калькулятор на реакте
constructor() {
        super();
        this.state = {
            valueInput: 0,
            firstOperand: '',
            secondOperand: '',
            result: '',
        }
        this.renderButton = this.renderButton.bind(this);
        this.refreshInput = this.refreshInput.bind(this);
    }
refreshInput(event) {
        const target = event.target.innerHTML;
        //if you clicked a number
        if(!isNaN(parseFloat(target)) && isFinite(target)) {
            this.setState({
                firstOperand: this.state.firstOperand + target,
                valueInput: this.state.firstOperand,
            })
        }
    }


Функция refreshInput висит обработчиком на всех кнопках калькулятора. Почему получается опоздание в 1 шаг при обновлении вывода значения в input
То есть получается, что я нажимаю кнопку, а инпут обнуляется, потом нажимаю второй раз кнопку - тогда выводится значение первого нажатия и т.д.
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
refreshInput(event) {
        const target = event.target.innerHTML;
        //if you clicked a number
        if(!isNaN(parseFloat(target)) && isFinite(target)) {
            let number = this.state.firstOperand + target
            this.setState({
                firstOperand: number,
                valueInput: number,
            })
        }
    }

setState отрабатывает не моментально
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы