setState in, в то время как l oop вызывает "Слишком много повторных визуализаций. React ограничивает количество визуализаций, чтобы предотвратить бесконечное l oop" - PullRequest
1 голос
/ 12 февраля 2020

Я пытаюсь вычислить countDiff и добавить объект в массив записей countDiff times. Например, если значение countDiff равно двум, я хотел бы добавить два одинаковых объекта с увеличенным значением tempRecordId.

Однако «Слишком много повторных визуализаций. React ограничивает число визуализаций, чтобы предотвратить бесконечное l oop» ошибка возникла. Знаете ли вы какой-либо способ setState в al oop или способ выяснить этот лог c?

      const countDiff = homeRecordCount - awayRecordCount;

      let i = 0;
      let insertTeamId = countDiff > 0 ? awayTeamId : homeTeamId;

      if (countDiff != 0)
      {
        while(countDiff != i)
        {
          setTempRecordId(tempRecordId + 1);
          addRowToRecord({scoreMemberName:null, scoreMemberId: null, scoreTeamId: insertTeamId, assistMemberName: null, assistMemberId: null, matchId: matchId, codeId: 7, id: 0, tempRecordId: tempRecordId })
      i++;
    }
}

Ответы [ 3 ]

1 голос
/ 12 февраля 2020

Лучший способ справиться с этой ситуацией - создать конечный объект, который вам нужен, прежде чем вы установите состояние на первое место. ie через некоторое время переместите состояние набора на l oop.

1 голос
/ 12 февраля 2020

Вы не должны использовать условные выражения или циклы в компоненте Hook. https://reactjs.org/docs/hooks-rules.html

В этом случае вы можете просто добавить все записи одновременно.

0 голосов
/ 12 февраля 2020

Это означает, что как только вы вызовете setState, он отобразит вашу страницу. ваша логика c установлена ​​на бесконечный l oop. Я предполагаю, что все время (countDiff! = I => true) приходит внутрь, пока l oop. Пожалуйста, установите ваши логики c с некоторыми конечными условиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...