Изначально посыл неверный: в зависимости useEffect не нужно добавлять все, что используется в колбеке (т.к. useEffect не мемоизирует колбек в отличие от useMemo или useCallback) Так что надо было в самом начале видео оставить пустой массив зависимостей - и все.
@@easydev1205, а статье рассказывается о том как бороться с линтером - и самый простой способ это заткнуть его добавив все зависимости. Но ничего не сказано почему надо добавлять в зависимости еффекта то, от чего я не хочу зависеть (кроме обтекаемой фразы "это опасно")
@easydev12059 ай бұрын
Это опасно потому что стейт должен быть синхронизирован. Иначе могут вылезти трудноуловимые баги. Что и логично, учитывая для чего вообще нужен useEffect и как он работает. В некоторых случаях можно подавить предупреждение линтера и всё будет работать корректно. Общее же правило для этой ситуации ясно описано в документации. Следовать ему или нет решать вам
@ТимофейЯременко-н4ж9 ай бұрын
@@easydev1205, useEffect нужен для реагирования на определенные изменения. Если мне не нужно реагировать на изменение функции fetch (как в вашем примере) а просто надо ее вызвать один раз при маунте компоненты (пустой массив зависимостей) или перевызвать ее при изменении каких-то аргументов (тогда эти аргументы следует поместить в зависимости но никак не саму функцию!) У вас очень неудачный пример в видео.
@easydev12059 ай бұрын
useEffect нужен не для реагирования на определенные изменения, а для вызова side effect, о чём и говорит его название. А в зависимости вы помещаете стейт который нужно синхронизировать. У вас просто неверное понимание что такое useEffect, поэтому и вопросы такие возникают. Может сделаю отдельное видео об этом
@kreet48559 ай бұрын
Полезно, спасибо!
@NikolayKasparov9 ай бұрын
Понравился один урок подписался на этот канал, после этого отписался ❤
@easydev12059 ай бұрын
Зря отписываетесь. Может ещё что-то полезное будет