history = useHistory();
useEffect(() => {
где то внутри исспользую history
},[ ]);
соответственно получаю
ESLint: React Hook useEffect has a missing dependency: 'history'. Either include it or remove the dependency array.(react-hooks/exhaustive-deps)
подскажите ,плз, как правильно это обработать?
Не верить слепо правилам, а где надо отключать
да я вообще не прописывался зависимости в которых был уверен, но вот решил поправить и не очень то знаю как хук в хуке обработать
не надо никакой хук в хуке обрабатывать. тебе тут линтер говорит, чтобы ты зависимости добавил. если уверен, что они там не нужны. напиши // eslint-disable-next-line react-hooks/exhaustive-deps перед строкой с массивом зависимостей у тебя внутри эффекта используется history значит. и линтер хочет чтобы ты пересчитывал все в зависимости от него.
ололошка ты что ли?
не спрячешься от вас нигде)
плохо прячешься)
это понятно, но мне интересно есть ли возможность не пересчитывать и при этом не отменять правила
не даст так линтер сделать, если это правило определено в нем. или отключать совсем. или локально. или делать как он просит)
да лан. я и не прятался) просто ливнул из одного чата. в этих то всегда и был)
( печалько
ну я оттуда откуда ты ливнул)
я понял по вопросу)) только там такой ник был. разобрался со счетчиком своим?
да, но почему интервал нужно определять с рефом - не особо... как по мне, классовый компонент намного проще в оборщении по крайней мере на данном этапе...
тут прикол вот в чем, когда ты заводишь интервалы у тебя создается новый объект. так? в классах ты явно говорил, this.чтото. здесь у тебя это уже новый объект. чтобы остновить его - нужно передать его в clearInterval. но ... при изменении пропсов или стейта вызывается снова твоя функция. снова создается новый интервал. и так далее... поэтому ты не сможешь стопнуть старый. поэтому нужен реф который указывает на таймер
можешь здесь уточнить, какой объект создается при дефайне интервала?
ты имеешь ввиду что после изменения стейта в функциональном компоненте, компонент перерисовывается, и у перерисованного компонента нет доступа к интервалу который живет в компоненте который был перед перерисовкой?
идентификатор таймера возвращается при вызове setInterval если точнее.
ну типа того. каждое изменение стейта вызывает рендер. каждый вызов рендера это вызов функции. вызов фунции - инициализация. идентификатор таймера ты никак не сохранял. поэтому и не стопалось ничего. создавались просто бесконечные интервалы)
понял, спасибо
Обсуждают сегодня