переменной указанной в зависимостях отслеживается не всегда? Вот здесь подробно расписана эта проблема(но решение не указано) https://lukaszmakuch.pl/post/react-hooks-oops-part-3-an-effect-does-not-run-again-when-its-dependencies-change
Юзэффект вобщем то и не отслеживает переменные в депсах, просто на каждый апдейт компонента делает шелоу компеа массива, указанного вторым параметром
Ref мутируется, этот чувак целую статью об этом выдал?
Результат осваивания библиотеки в обход документации
Ну т.е. получается так, что у меня примерно в 9 из 10 случаев указанная в зависимостях useEffect переменная, вызывает указанную внутри неё функцию, после изменения значения этой переменной, но в какие-то случайные моменты этого может не произойти, как с этим быть?
Как переменная может вызывать функцию? Давай нормально объясни
Эффект срабатывает всегда при изменении зависимости, если ты найдешь кейс когда это не так, то это баг
Так в статье же пример с useRef. useRef как раз специально используют порой для сохранения ссылки между ререндерами
Извиняюсь, у меня в другом месте была ошибка, которая выдавала поведение, очень похожее на то, что описано в статье, и это запутало меня еще сильнее, спасибо за ваши ответы 🙈
Если зависимость сама по себе не связана с каким либо стейтом любого уровня то не вызовет
Многие думают, что эффект сраьатывает от изменения зависимостей, типа реактивно Это прям максимально часто распространено
и в этом по большей части реакт тима повинна
Ага, что у них, блин, доки нет нормальной😁
Да не в этом даже суть, само слово неверно подобрано "dependencies"
Ну после рендера конечно
https://t.me/react_js/1094075 Вот правильная абстракция для восприятия но в доке ее нет...
Странно, а почему большинство все таки поняли правильно
Мне нравится про useEffect думать как про синхронизацию с чем-то внешним)
В чате каждый день вопросы, связанные с непониманием)
Может большинство просто в твоём окружении? Я лично очень часто встречаю такую ошибку среди новичков и тех кто не сильно старался вникнуть в концепцию
В том то и дело что для такой абстракции апи выглядит примерно так watch(effect, [deps]) И ты такой смотришь на юзэффект и думаешь вооо это оно, но не оно🌚
Сделай пулреквест в доку)
Даня все в боге пояснил но очень длинно...😁
«Что же делает useEffect? Используя этот хук, вы говорите React сделать что-то после рендера. React запомнит функцию (то есть «эффект»), которую вы передали и вызовет её после того, как внесёт все изменения в DOM.» Мне кажется достаточно однозначно
Хорошо, я не понял только, вот компонент отрисовался, как ему понять, когда апдейтиться?
Тогда когда изменился его стейт или стейт одного из родителей, если не было на пути мемоизированых
Все, вспомнил, благодарю
Обсуждают сегодня