Size: a a a

React: русскоязычное сообщество

2020 May 16

ИМ

Иван Моров in React: русскоязычное сообщество
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Вот. Первый скрин это про роутинг, второй весь компонент целиком
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Иван Моров
Вот. Первый скрин это про роутинг, второй весь компонент целиком
В который таймер пихаю
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Думаю, все дело в <RedirectTo ... />
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Ну так мне нужно на другой адрес перейти)
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А, чего именно вы хотите, чтобы ошибка пропала, или что-то другое не работает?
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Т.е. вас только ошибка смущает?
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Ну вообще я хочу что бы на странице и таймер был, и когда я на другую страницу приложения перехожу ошибка не вылетала)))
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А сейчас таймер есть, работает?
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Там логика такая: есть кнопка, юзер жмет на нее - начинается запись,  появляется таймер, жмет еще раз - редирект уже на следующую страницу
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Ну вот все остальное, кроме ошибки работает как надо?
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Да))
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Ок.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Тогда надо примерно в таком стиле переписать:
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Просто я пока только разбираюсь, и хотелось бы понимать в чем дело))
источник

ИМ

Иван Моров in React: русскоязычное сообщество
И как такие проблемы решаются
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
const Timer = () => {
 const [timerValue, setTimerValue] = useState(1)
 const [timerDescr, setTimerDescr] = useState(null)
 useEffect(() => {
   const newTimerDescr = setInterval(() => {
     setTimerValue(timerValue + 1)
   }, 1000)
   setTimerDescr(newTimerDescr)
   return () => clearInterval(timerDescr)
 })
 return <span>{timerValue}</span>
}
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Здесь суть в том, что после того, как компонент пропадет из дерева, интервал очистится и не будет пытаться обновить состояние.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
(За это отвечает функция, которая возвращается из `useEffect`).
источник

ИМ

Иван Моров in React: русскоязычное сообщество
Ошибка Maximum update depth exceeded
источник