Я писал простой код React, где вводил число, а затем нажимал кнопку, чтобы добавить его к текущему значению.
Например, если я введу 5 в поле ввода, а затем нажму кнопку «Подсчет», это добавит 5 к текущему значению (0). Но я получал ошибку ниже.
Просматривая поиск Google, видимо, это распространенная ошибка, которую допускают многие начинающие программисты.
Судя по всему, строка 27 выше вызовет функцию this.handleAddCount(input) при выполнении функции render(). Я думал, что поскольку эта функция является событием onClick, функция будет запускаться только при нажатии кнопки. Однако в соответствии с тем, как работает javaScript, код будет выполняться сверху вниз, и эта функция будет выполняться, даже если это событие onClick. И это вызывает изменение состояния, и компонент снова отрисовывается, и функция снова запускается… создавая бесконечный цикл.
Есть несколько способов исправить это:
Первый вариант — изменить строку 27 на функцию Обратный вызов. Функция обратного вызова гарантирует, что this.handleAddCount(input) не запустится, пока не будет нажата кнопка.
Второй вариант — связать функцию.
Помните, что JavaScript выполняет код последовательно сверху вниз, синхронно и однопоточно.