В целом так и делаем) И приходим к contexts hell) Потому что если какой то модуль имеет немного больше логики, которую мы еще инкапсулируем в кастомные хуки, просто что бы разделить разные части логики в отдельных местах, то получается что у нас много values меняются в не зависимости друг от друга. Я как то писал на React компонент таблицы, и вышел этот компонент большим, много пропсов и тд...Вышло больше 10 контекстов, что бы это происводительно работало.
Подскажите а зачем делать useMemo на todos, totalTodos? Ведь мы оптимизировали ререндеринг отдельной тудушки за счет контекста экшенов, но todos и totalTodos будут всегда меняться и memo не поможет. Верно?
Мой курс актуален. Чего-то принципиально нового, что бы поменяло подход к разработке, не появилось в 18й версии. Да и в 19й не появится. Добавится несколько новых фишек, но ядро будет тем же. Однако планы по обновлению или записи другого курса у меня есть. Нет понимания сроков.
Михаил,немного не туда вопрос ,но все же: подскажите. У вас было легкое видео по rtk-query. Скажите, есть ли возможность делать ревалидацию запроса только при положительном ответе, а не постоянно (invalidate)
Да, в RTK Query есть возможность настроить ревалидацию кэша только при положительном ответе. Для этого вы можете использовать providesTags и invalidatesTags в комбинации с проверкой статуса ответа.
@@mishanep это генератор статических вебстраниц, использующий популярные нейронки. Вчера попробовал в первый раз и был удивлён насколько уже хорошо ИИ справляется с вёрсткой и даже не много с бэкендом, если в запросе задать.
Смысла в их сравнении нет, ибо это разные технологии. Redux - стейт менеджер, задачей которой является хранение и изменение данных приложения. Context API - технология в React, созданная для лёгкого обмена данными между компонентами.
а как обратиться к контексту в файле запросов, который содержит вызовы аксиос? теоретически вызовы идут из компонент которые обернуты провайдером, но почему-то в этом файле контекст оказывается недоступен. так и должно быть или я что-то не правильно сделал и искать у себя ошибку?
Вы предлагаете мне догадаться как у вас организован код и сделать догадку. Шанс попасть в яблочко - невелик. Скорее всего речь об обычных функциях, где мы не можем использовать хуки по определению, в значит и читать контекст тоже. Значит функции должны принимать нужные им данные в качестве аргументов.
Обычно считается, что оптимизацией надо заниматься только когда есть проблемы с производительностью. Но здесь надо смотреть в целом на кейс, над каким мы работаем. В моем простом примере, если я ожидаю, что юзер будет вводить сотни тудушек, то мемоизация будет не лишней. Если бы я делал корзину в интернет-магазине специфических товаров, где редко берут больше трех-пяти единиц товара, то, вероятно, я бы отказался от memo.
Капец! Работая с Реакт об всей этой оптимизации постоянно нужно думать… Во Vue это уже сделано! Расскажите еще почему useState изменяеться асинхронно? И это большая проблема!!!
Контекст используют для сложных составных ui-компонентов в технике компаунд, например. В этом случае через контекст шарится состояние составных частей общего компонента, чтобы реагировать на их изменение. Плюс можно скидывать туда пропсы, чтобы не передавать их отдельно на каждую компаунд-часть, а вешать изначально на общую обертку
Да это редко кому нужно, сталкивался пару раз на тестовых, хотели именно контекста. Бесила проверка на наличие контекста (если с типизацией), которую здесь спрятали в хук вместе с двумя импортами. Хук - это полезная идея из видео. И не задумывался об оптимизации экшенов, т.е. разделение контекста - вторая полезная идея видео. Но, в целом, конечно - нах такое вообще нужно в обычном проекте. т.к. бойлерплейта чуть ли не больше, чем в старом редаксе.
Магия разработки! 🔥 Пошёл оптимизировать приложения. Спасибо за полезный и годный контент! 👍
Отличный контент и формат!
Михаил вы невероятно крутой учитель !! Спасибо вам !!
В целом так и делаем) И приходим к contexts hell) Потому что если какой то модуль имеет немного больше логики, которую мы еще инкапсулируем в кастомные хуки, просто что бы разделить разные части логики в отдельных местах, то получается что у нас много values меняются в не зависимости друг от друга. Я как то писал на React компонент таблицы, и вышел этот компонент большим, много пропсов и тд...Вышло больше 10 контекстов, что бы это происводительно работало.
это все работает да, но такое дрочево ... вместо этих танцев с бубном заюзать тот же mobX и нормально работать
useSignal();
npm I @preact/signal ->
передавать куда угодно что угодно, перерисуется только обновлённый
@@владимиркарпов-т4ъ юзаю сейчас jothai и кайфую
Спасибо за полезное видео!
В React 19 не будет вроде как мемоизации? Разделять на два контекста это хорошая идея.
Не в самом Реакте. Это будет отдельный бабел-плагин, опциональный к использованию. Пока он в экспериментальном режиме.
огонь!🔥
use-context-selector не решает эту проблему?
Спасибо, за отличный материал!
Миша, такое впечатление, что тебе необходимо отдохнуть, недельки три. Кажется, ты себя загоняешь
Подскажите а зачем делать useMemo на todos, totalTodos? Ведь мы оптимизировали ререндеринг отдельной тудушки за счет контекста экшенов, но todos и totalTodos будут всегда меняться и memo не поможет. Верно?
спасибо за контент)
Михаил, здравствуйте! Вы планируете обновлять свой курс по React 18? Вы классно объясняете, хотелось бы у вас поучиться!
Мой курс актуален. Чего-то принципиально нового, что бы поменяло подход к разработке, не появилось в 18й версии. Да и в 19й не появится. Добавится несколько новых фишек, но ядро будет тем же.
Однако планы по обновлению или записи другого курса у меня есть. Нет понимания сроков.
Михаил,немного не туда вопрос ,но все же: подскажите. У вас было легкое видео по rtk-query. Скажите, есть ли возможность делать ревалидацию запроса только при положительном ответе, а не постоянно (invalidate)
Да, в RTK Query есть возможность настроить ревалидацию кэша только при положительном ответе. Для этого вы можете использовать providesTags и invalidatesTags в комбинации с проверкой статуса ответа.
Нужно использовать сторы)
Михаил, что вы думаете про websim ai?
Спасибо
Никогда про него не слышал.
@@mishanep это генератор статических вебстраниц, использующий популярные нейронки. Вчера попробовал в первый раз и был удивлён насколько уже хорошо ИИ справляется с вёрсткой и даже не много с бэкендом, если в запросе задать.
Первый раз такой подход видел в докладе Яндекса. Надеюсь 19 версия с компилятором изменит оптимизацию
Можно еще сделать видео Redux vs Context. Где, что и когда использовать, какой от этого профит. С удовольствием бы посмотрел !
Смысла в их сравнении нет, ибо это разные технологии.
Redux - стейт менеджер, задачей которой является хранение и изменение данных приложения.
Context API - технология в React, созданная для лёгкого обмена данными между компонентами.
а как обратиться к контексту в файле запросов, который содержит вызовы аксиос? теоретически вызовы идут из компонент которые обернуты провайдером, но почему-то в этом файле контекст оказывается недоступен. так и должно быть или я что-то не правильно сделал и искать у себя ошибку?
Вы предлагаете мне догадаться как у вас организован код и сделать догадку. Шанс попасть в яблочко - невелик. Скорее всего речь об обычных функциях, где мы не можем использовать хуки по определению, в значит и читать контекст тоже. Значит функции должны принимать нужные им данные в качестве аргументов.
@@mishanep спасибо. догадались же. разве профессионал такого уровня мог иначе? я так и предположил но усомнился. в итоге сделал через мобикс
А, почему ты в li key не добавил?
Потому что не надо. Ключи добавлены на уровне выше, этого Реакту достаточно.
@@mishanep Ok. Я не заметил этого. Берешь к себе джунов на реакт или некст за недорого на удаленку? За менторинг и суп.
Спасибо за видео! На 13:59 есть оговорка, речь идет про редакс на сколько я понял
иногда бывает что не писать memo гораздо дешевле чем писать memo. Работает ли это так же и здесь?
Обычно считается, что оптимизацией надо заниматься только когда есть проблемы с производительностью. Но здесь надо смотреть в целом на кейс, над каким мы работаем. В моем простом примере, если я ожидаю, что юзер будет вводить сотни тудушек, то мемоизация будет не лишней. Если бы я делал корзину в интернет-магазине специфических товаров, где редко берут больше трех-пяти единиц товара, то, вероятно, я бы отказался от memo.
@@mishanep Согласен
На первом этапе: зачем оборачивать в useCallback, если потом не использовать эти функции как зависимость?
По-моему у меня просто линтер не ругался, а обычно в таких случаях линтер требует включить в массив зависимостей всё, что используется внутри хука.
Капец! Работая с Реакт об всей этой оптимизации постоянно нужно думать… Во Vue это уже сделано! Расскажите еще почему useState изменяеться асинхронно? И это большая проблема!!!
Если бы useState работал синхронно твое приложение жутко лагало бы
как-то много плясок с бубном, почему во Vue все вроде как работает сразу? нужно пояснение, срочно
потому что во vue мощная и удобная система реактивности и закадровых оптмизаций
Если вам нужно работать с парочкой модалок и изменять тему - не ставте себе zustand либо ещё какой нибуть стм.Контекста хватит
Ң
Пожалуста сделайте обзор про React 19
Так у меня был уже :) несколько месяцев назад. Называлось Будущее Реакта
Есть такая тема с разделением на гетеры/сетеры
Михаил расскажите про зустанд в нексте
спасибо за видео, но все равно ничего не понял
Зачем вообще использовать контекст? На любом крупном проекте есть стейт менеджер. Контекст годится разве что для пет-проектов 😂
Контекст используют для сложных составных ui-компонентов в технике компаунд, например. В этом случае через контекст шарится состояние составных частей общего компонента, чтобы реагировать на их изменение. Плюс можно скидывать туда пропсы, чтобы не передавать их отдельно на каждую компаунд-часть, а вешать изначально на общую обертку
Вывод - отказаться от контекста
Да это редко кому нужно, сталкивался пару раз на тестовых, хотели именно контекста. Бесила проверка на наличие контекста (если с типизацией), которую здесь спрятали в хук вместе с двумя импортами. Хук - это полезная идея из видео. И не задумывался об оптимизации экшенов, т.е. разделение контекста - вторая полезная идея видео. Но, в целом, конечно - нах такое вообще нужно в обычном проекте. т.к. бойлерплейта чуть ли не больше, чем в старом редаксе.
можно перестать грызть кактус и использовать zustand
если тебе нужна робота с модалками либо изменение темы зачем тебе в проект стм тянуть
однако тема полезна тем что перед тем как переходить на что-то лучшее, контекст нужно знать