Лучшие практики по работе с Context API в React приложении

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ธ.ค. 2024

ความคิดเห็น • 58

  • @sergejserdjukow4859
    @sergejserdjukow4859 4 หลายเดือนก่อน +6

    Магия разработки! 🔥 Пошёл оптимизировать приложения. Спасибо за полезный и годный контент! 👍

  • @victormog
    @victormog 4 หลายเดือนก่อน +6

    Отличный контент и формат!

  • @Roman-kn7kt
    @Roman-kn7kt 4 หลายเดือนก่อน +1

    Михаил вы невероятно крутой учитель !! Спасибо вам !!

  • @liganshow
    @liganshow 4 หลายเดือนก่อน +16

    В целом так и делаем) И приходим к contexts hell) Потому что если какой то модуль имеет немного больше логики, которую мы еще инкапсулируем в кастомные хуки, просто что бы разделить разные части логики в отдельных местах, то получается что у нас много values меняются в не зависимости друг от друга. Я как то писал на React компонент таблицы, и вышел этот компонент большим, много пропсов и тд...Вышло больше 10 контекстов, что бы это происводительно работало.

    • @eg0ist_665
      @eg0ist_665 4 หลายเดือนก่อน +5

      это все работает да, но такое дрочево ... вместо этих танцев с бубном заюзать тот же mobX и нормально работать

    • @владимиркарпов-т4ъ
      @владимиркарпов-т4ъ 4 หลายเดือนก่อน

      useSignal();
      npm I @preact/signal ->
      передавать куда угодно что угодно, перерисуется только обновлённый

    • @eg0ist_665
      @eg0ist_665 4 หลายเดือนก่อน

      @@владимиркарпов-т4ъ юзаю сейчас jothai и кайфую

  • @deker9296
    @deker9296 4 หลายเดือนก่อน +2

    Спасибо за полезное видео!

  • @АлександрСкиталец-ц7р
    @АлександрСкиталец-ц7р 4 หลายเดือนก่อน +6

    В React 19 не будет вроде как мемоизации? Разделять на два контекста это хорошая идея.

    • @mishanep
      @mishanep  4 หลายเดือนก่อน

      Не в самом Реакте. Это будет отдельный бабел-плагин, опциональный к использованию. Пока он в экспериментальном режиме.

  • @bukashkakriper228-ns9pp
    @bukashkakriper228-ns9pp 4 หลายเดือนก่อน +1

    огонь!🔥

  • @user-ey2vv1dl3n
    @user-ey2vv1dl3n 27 วันที่ผ่านมา

    use-context-selector не решает эту проблему?

  • @shurinskiy
    @shurinskiy 2 หลายเดือนก่อน

    Спасибо, за отличный материал!
    Миша, такое впечатление, что тебе необходимо отдохнуть, недельки три. Кажется, ты себя загоняешь

  • @grandmaster-yo-yo
    @grandmaster-yo-yo 2 หลายเดือนก่อน

    Подскажите а зачем делать useMemo на todos, totalTodos? Ведь мы оптимизировали ререндеринг отдельной тудушки за счет контекста экшенов, но todos и totalTodos будут всегда меняться и memo не поможет. Верно?

  • @someChicoRy
    @someChicoRy 4 หลายเดือนก่อน

    спасибо за контент)

  • @Алексей-ш8э3л
    @Алексей-ш8э3л 4 หลายเดือนก่อน

    Михаил, здравствуйте! Вы планируете обновлять свой курс по React 18? Вы классно объясняете, хотелось бы у вас поучиться!

    • @mishanep
      @mishanep  4 หลายเดือนก่อน +2

      Мой курс актуален. Чего-то принципиально нового, что бы поменяло подход к разработке, не появилось в 18й версии. Да и в 19й не появится. Добавится несколько новых фишек, но ядро будет тем же.
      Однако планы по обновлению или записи другого курса у меня есть. Нет понимания сроков.

  • @denisyarmoshko7277
    @denisyarmoshko7277 4 หลายเดือนก่อน

    Михаил,немного не туда вопрос ,но все же: подскажите. У вас было легкое видео по rtk-query. Скажите, есть ли возможность делать ревалидацию запроса только при положительном ответе, а не постоянно (invalidate)

    • @sk89061
      @sk89061 4 หลายเดือนก่อน

      Да, в RTK Query есть возможность настроить ревалидацию кэша только при положительном ответе. Для этого вы можете использовать providesTags и invalidatesTags в комбинации с проверкой статуса ответа.

  • @DubinArtur
    @DubinArtur 4 หลายเดือนก่อน +2

    Нужно использовать сторы)

  • @Dik131WZD
    @Dik131WZD 4 หลายเดือนก่อน

    Михаил, что вы думаете про websim ai?
    Спасибо

    • @mishanep
      @mishanep  4 หลายเดือนก่อน

      Никогда про него не слышал.

    • @Dik131WZD
      @Dik131WZD 4 หลายเดือนก่อน

      @@mishanep это генератор статических вебстраниц, использующий популярные нейронки. Вчера попробовал в первый раз и был удивлён насколько уже хорошо ИИ справляется с вёрсткой и даже не много с бэкендом, если в запросе задать.

  • @artyomtaranenko2267
    @artyomtaranenko2267 4 หลายเดือนก่อน

    Первый раз такой подход видел в докладе Яндекса. Надеюсь 19 версия с компилятором изменит оптимизацию

  • @ОлегНизиёв-р9ж
    @ОлегНизиёв-р9ж 4 หลายเดือนก่อน

    Можно еще сделать видео Redux vs Context. Где, что и когда использовать, какой от этого профит. С удовольствием бы посмотрел !

    • @thats_embarrassing_JS
      @thats_embarrassing_JS 4 หลายเดือนก่อน

      Смысла в их сравнении нет, ибо это разные технологии.
      Redux - стейт менеджер, задачей которой является хранение и изменение данных приложения.
      Context API - технология в React, созданная для лёгкого обмена данными между компонентами.

  • @romanmed9035
    @romanmed9035 4 หลายเดือนก่อน

    а как обратиться к контексту в файле запросов, который содержит вызовы аксиос? теоретически вызовы идут из компонент которые обернуты провайдером, но почему-то в этом файле контекст оказывается недоступен. так и должно быть или я что-то не правильно сделал и искать у себя ошибку?

    • @mishanep
      @mishanep  4 หลายเดือนก่อน

      Вы предлагаете мне догадаться как у вас организован код и сделать догадку. Шанс попасть в яблочко - невелик. Скорее всего речь об обычных функциях, где мы не можем использовать хуки по определению, в значит и читать контекст тоже. Значит функции должны принимать нужные им данные в качестве аргументов.

    • @romanmed9035
      @romanmed9035 4 หลายเดือนก่อน

      @@mishanep спасибо. догадались же. разве профессионал такого уровня мог иначе? я так и предположил но усомнился. в итоге сделал через мобикс

  • @ringnull
    @ringnull 4 หลายเดือนก่อน

    А, почему ты в li key не добавил?

    • @mishanep
      @mishanep  4 หลายเดือนก่อน +1

      Потому что не надо. Ключи добавлены на уровне выше, этого Реакту достаточно.

    • @ringnull
      @ringnull 4 หลายเดือนก่อน

      @@mishanep Ok. Я не заметил этого. Берешь к себе джунов на реакт или некст за недорого на удаленку? За менторинг и суп.

  • @TeeBKECH
    @TeeBKECH 4 หลายเดือนก่อน +1

    Спасибо за видео! На 13:59 есть оговорка, речь идет про редакс на сколько я понял

  • @dkuba
    @dkuba 4 หลายเดือนก่อน

    иногда бывает что не писать memo гораздо дешевле чем писать memo. Работает ли это так же и здесь?

    • @mishanep
      @mishanep  4 หลายเดือนก่อน +6

      Обычно считается, что оптимизацией надо заниматься только когда есть проблемы с производительностью. Но здесь надо смотреть в целом на кейс, над каким мы работаем. В моем простом примере, если я ожидаю, что юзер будет вводить сотни тудушек, то мемоизация будет не лишней. Если бы я делал корзину в интернет-магазине специфических товаров, где редко берут больше трех-пяти единиц товара, то, вероятно, я бы отказался от memo.

    • @dkuba
      @dkuba 4 หลายเดือนก่อน

      @@mishanep Согласен

  • @g_prgv
    @g_prgv 4 หลายเดือนก่อน +1

    На первом этапе: зачем оборачивать в useCallback, если потом не использовать эти функции как зависимость?

    • @mishanep
      @mishanep  4 หลายเดือนก่อน +2

      По-моему у меня просто линтер не ругался, а обычно в таких случаях линтер требует включить в массив зависимостей всё, что используется внутри хука.

  • @pavel7930
    @pavel7930 4 หลายเดือนก่อน

    Капец! Работая с Реакт об всей этой оптимизации постоянно нужно думать… Во Vue это уже сделано! Расскажите еще почему useState изменяеться асинхронно? И это большая проблема!!!

    • @rea1m_
      @rea1m_ 2 หลายเดือนก่อน

      Если бы useState работал синхронно твое приложение жутко лагало бы

  • @nikitashelest5343
    @nikitashelest5343 4 หลายเดือนก่อน +1

    как-то много плясок с бубном, почему во Vue все вроде как работает сразу? нужно пояснение, срочно

    • @eg0ist_665
      @eg0ist_665 4 หลายเดือนก่อน

      потому что во vue мощная и удобная система реактивности и закадровых оптмизаций

  • @Jen13022
    @Jen13022 4 หลายเดือนก่อน +4

    Если вам нужно работать с парочкой модалок и изменять тему - не ставте себе zustand либо ещё какой нибуть стм.Контекста хватит

  • @codegorian6057
    @codegorian6057 4 หลายเดือนก่อน +1

    Пожалуста сделайте обзор про React 19

    • @mishanep
      @mishanep  4 หลายเดือนก่อน

      Так у меня был уже :) несколько месяцев назад. Называлось Будущее Реакта

  • @from_brest2631
    @from_brest2631 4 หลายเดือนก่อน

    Есть такая тема с разделением на гетеры/сетеры

  • @alexeyfilippov42
    @alexeyfilippov42 4 หลายเดือนก่อน

    Михаил расскажите про зустанд в нексте

  • @TahomaID
    @TahomaID 4 หลายเดือนก่อน

    спасибо за видео, но все равно ничего не понял

  • @JJohnson-fy9uz
    @JJohnson-fy9uz 4 หลายเดือนก่อน +1

    Зачем вообще использовать контекст? На любом крупном проекте есть стейт менеджер. Контекст годится разве что для пет-проектов 😂

    • @olegsh2888
      @olegsh2888 4 หลายเดือนก่อน +2

      Контекст используют для сложных составных ui-компонентов в технике компаунд, например. В этом случае через контекст шарится состояние составных частей общего компонента, чтобы реагировать на их изменение. Плюс можно скидывать туда пропсы, чтобы не передавать их отдельно на каждую компаунд-часть, а вешать изначально на общую обертку

  • @frontfromsofa
    @frontfromsofa 4 หลายเดือนก่อน +1

    Вывод - отказаться от контекста

    • @CJIu3eHb
      @CJIu3eHb 4 หลายเดือนก่อน +2

      Да это редко кому нужно, сталкивался пару раз на тестовых, хотели именно контекста. Бесила проверка на наличие контекста (если с типизацией), которую здесь спрятали в хук вместе с двумя импортами. Хук - это полезная идея из видео. И не задумывался об оптимизации экшенов, т.е. разделение контекста - вторая полезная идея видео. Но, в целом, конечно - нах такое вообще нужно в обычном проекте. т.к. бойлерплейта чуть ли не больше, чем в старом редаксе.

  • @Alex-Shohet
    @Alex-Shohet 4 หลายเดือนก่อน

    можно перестать грызть кактус и использовать zustand

    • @Jen13022
      @Jen13022 4 หลายเดือนก่อน +2

      если тебе нужна робота с модалками либо изменение темы зачем тебе в проект стм тянуть

    • @Alex-Shohet
      @Alex-Shohet 4 หลายเดือนก่อน +2

      однако тема полезна тем что перед тем как переходить на что-то лучшее, контекст нужно знать