React + Mobx Гайд. Удобный state manager без бойлерплейта

Поделиться
HTML-код
  • Опубликовано: 16 июн 2024
  • Всем привет, на связи WebStack - Frontend. В этом выпуске мы познакомимся с популярным стейт менеджером для React приложения - Mobx.
    Мой курс, в котором мы разберем самые важные темы для собеседования:
    boosty.to/webstack-fe/purchas...
    00:00 | Вступление
    01:00 | Установка зависимостей
    01:20 | Mobx стора на примере счетчка
    09:24 | Переиспользования стора в нескольких компонентах
    13:21 | Асинхронности в сторах
    23:17 | Дебаг сторов
    24:36 | Храним сторы в контексте
    29:22 | Выводы
    Поддержать канал:
    boosty.to/webstack-fe
    Репозиторий с проектами:
    github.com/vosdux
    Канал с советами для начинающих Frontend разработчиков:
    t.me/vosduxFrontend
    Чат где можно задать мне вопросы и пообщаться с другими начинающими фронтендерами:
    t.me/+0FWmXELauK44NjRi
    Наш Discord сервер:
    / discord

Комментарии • 94

  • @webstack-frontend1697
    @webstack-frontend1697  5 месяцев назад

    Мой курс, в котором мы разберем самые важные темы для собеседования:
    boosty.to/webstack-fe/purchase/1940940?ssource=DIRECT&share=subscription_link

  • @dahulivsiozanjato
    @dahulivsiozanjato Год назад +3

    Спасибо за такое лаконичное и понятное изложение! Суть ухватила

  • @user-es1rn5oc3h
    @user-es1rn5oc3h 9 месяцев назад +4

    Самое лучшее видео, которое встретил об MobX, всё понял с первого раза, хоть и не силён во фронте и на без использования ts и вообще пишу на классовых компонентах. Спасибо!)

  • @RuslanZolotoy
    @RuslanZolotoy 6 месяцев назад +1

    Благодарю за такое подробное и понятное объяснение темы с MobX, пришёл на проект с этим state managerОМ)), твой контент выручает!

  • @Idealist2011
    @Idealist2011 2 месяца назад +3

    А я видел, как сложные сторы-классы прокидывают как props drilling через все компоненты по иерархии. Это был трэш еще тот.

  • @rasul7702
    @rasul7702 9 месяцев назад +3

    Спасибо большое! Не думал что MobX настолько легкий, раньше даже не смотрел в его сторону

  • @user-yt2on5hy4c
    @user-yt2on5hy4c 6 месяцев назад +2

    Классное видео, лаконично. Кстати для примера долгого выполнения запросов, можно использовать throttling

  • @user-de6tq3zr6q
    @user-de6tq3zr6q 6 месяцев назад +2

    Хороший ролик по MobX, спасибо!

  • @user-de4ft5rb1d
    @user-de4ft5rb1d 4 месяца назад +1

    Отличное видео, зашел на проект с mobX, этого видео достаточно чтобы понять что к чему

  • @Andrew-pr6nb
    @Andrew-pr6nb 10 месяцев назад +1

    Спасибо!

  • @bogdannovac6556
    @bogdannovac6556 9 месяцев назад +2

    good content
    clear, and explicit

  • @kostasancez2358
    @kostasancez2358 11 месяцев назад +3

    Короче тема, надо попробовать

  • @banpoprichinechan
    @banpoprichinechan 2 месяца назад

    Спасибо за ролик! Mobx кажется таким легким или я чего-то не знаю. Уже какое-то время работаю с ним, разобралась интуитивно, решила посмотреть тутор, чтобы всё уложить в голове. Прояснились некоторые моменты, особенно с контекстом)

  • @multtanker6365
    @multtanker6365 Месяц назад +1

    спасибо, хороший ролик

  • @user-dg7ri8yr7s
    @user-dg7ri8yr7s 3 месяца назад +1

    ну слушай...
    кайфовый гайд! прям огонь!

  • @igetout
    @igetout 6 дней назад +1

    Пытаясь повторить код - поймал ошибку на 12:11. Когда через спред передаем пропсы, методы теряются, в компонент приходят undefined. Решается явным указанием свойств через пропсы, с потерей лаконичности((( Из того что нагуглил - спред-оператор копирует свойства, определенные непосредственно на объекте, методы могут не быть корректно привязаны или с копированы. То есть проблема возникала при копировании свойств, через spread. Видео супер, отличное, доступное и понятное объяснение, автору респект)

    • @webstack-frontend1697
      @webstack-frontend1697  5 дней назад +1

      Спасибо за отзыв!
      Честно говоря не знаю почему именно так могло получиться

    • @igetout
      @igetout 5 дней назад

      @@webstack-frontend1697 думаю, дело в конфиге tsc у меня, но я забил проверять. Оставил коммент, на случай, если у кого-то тоже проблема возникнет, чтобы время сэкономить)

  • @WorldCount
    @WorldCount 3 месяца назад +2

    А я как дурачок для каждого стора свой контекст создаю и оборачиваю приложения во все контексты через reducer. Спасибо

  • @user-fj8cu3nq9h
    @user-fj8cu3nq9h Год назад +1

    Привет! Спасибо за видео, отличная подача материала👍
    Только вот остались вопросы по RootStore, когда все же его нужно использовать, а когда не стоит? Не сильно ли это скажется на оптимизации использование useContext?

    • @webstack-frontend1697
      @webstack-frontend1697  Год назад +3

      Если у вас разрослось приложение, и количество сторов растёт, как на дрожжах, стоит сразу прибегнуть к этой практике. На оптимизацию это сильно не влияет

    • @user-ko1fc8ve6v
      @user-ko1fc8ve6v 8 месяцев назад

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

  • @pika4u380
    @pika4u380 3 месяца назад +1

    Круто, давно хотел попробовать mobX, но руки не доходили. Действительно удобно. Удинственное, что я не согласен с уверждением, что можно безболезненно все компоненты оборачивать в memo. React так же расходует ресурсы на проверку небходимости перерисовывать компонент в memo и без последствий для производительности это не проходит

  • @idontknowserjk8550
    @idontknowserjk8550 7 месяцев назад +1

    Делаю установку на получение внимания от алгоритмов Ютуба. Спасибо!

  • @tim.wonderer
    @tim.wonderer 2 месяца назад +1

    привет интересная подача а чем отличается то что ты достаешь поля класса через деструктуризацию от того что если создать инстанс класса через useState или нет разницы особо?

    • @webstack-frontend1697
      @webstack-frontend1697  2 месяца назад

      Привет. Если я правильно понял вопрос, то через useState ты таким образом создашь локальный стор. А через экспортированный инстас класс доступ к нему будет из всех компонент

  • @rossmanov
    @rossmanov 2 месяца назад +1

    mobx прекрасная вещь! Скоро закончится время redux и redux toolkit.

  • @valentynlugovyi4789
    @valentynlugovyi4789 9 месяцев назад +1

    Ок, cool

  • @user-hl6dn6rl9r
    @user-hl6dn6rl9r 10 месяцев назад +1

    На счет оборачивание всего в observer, ведь он под капотом библиотеки использует useMemo react. Tсли таким образом оборачивать статичные компоненты, не увеличит ли это рендер приложения?

    • @webstack-frontend1697
      @webstack-frontend1697  10 месяцев назад +4

      Не useMemo, а просто memo. Это аналог pureComponent. Это наоборот убирает лишние перерисовки при перерисовке родителя. Да и сам useMemo на рендеры никак не влияет

    • @user-hl6dn6rl9r
      @user-hl6dn6rl9r 10 месяцев назад

      @@webstack-frontend1697 Спасибо

  • @pashabezk
    @pashabezk 4 месяца назад +1

    Спасибо за отличное объяснение! MobX гораздо приятнее и интуитивнее Redux

  • @Bugagych
    @Bugagych 7 месяцев назад

    Самый крутой ролик по mobx. А есть какой нибудь более обширный ролик, где написано приложение с использованием mobx? Хочется увидеть react-ts-mobx rest-api приложения, которое общается с разными микросервисами.
    Я на работе тоже использую mobx, но у меня есть только один стор, в котором всё и сразу. Только обращение к апи в соседнем файле. И не могу найти нормального видео, где показано как правильно дробить сторы, в каких случаях, как оптимизировать всё это.

    • @webstack-frontend1697
      @webstack-frontend1697  7 месяцев назад +2

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

    • @Bugagych
      @Bugagych 7 месяцев назад

      @@webstack-frontend1697 Очень жду)

    • @skirrsolo4077
      @skirrsolo4077 6 месяцев назад

      @@webstack-frontend1697 очень хотим

  • @iGotton
    @iGotton 8 часов назад +1

    +

  • @valentineserebreanu398
    @valentineserebreanu398 4 месяца назад +1

    12:34 а если ты поставишь 2 компонента Wrapper а не один, то они же будут использовать один и тот же стор, и когда будешь один, будет меняться и другой) как это обходить? это же немного убивает компонентность. мы же не собираемся только один раз использовать компоненты

    • @webstack-frontend1697
      @webstack-frontend1697  4 месяца назад +1

      Стор и не стоит использовать внутри глупой, переиспользуемой компоненты. Стор стоит использовать а неком "контейнере", который это все дело собирает вместе. Лично я создаю один стор на страницу и внутри этого стора собираю другие преисподьзуемые сторы

    • @valentineserebreanu398
      @valentineserebreanu398 4 месяца назад

      @@webstack-frontend1697 так если я хочу два таких контейнера? то есть мобикс не переиспользуемый?) меня волнует масштабируемость, в данном подходе ее просто нет, и такую тяжелую либу как мобикс я бы 100% не использовал

  • @lhb27
    @lhb27 6 месяцев назад

    А что вы думаете про effector?

    • @webstack-frontend1697
      @webstack-frontend1697  6 месяцев назад

      Честно говоря, я его ещё не успел потрогать

    • @lhb27
      @lhb27 6 месяцев назад

      @@webstack-frontend1697ну в общем и целом effector не плох, но с миграцией на next 13 возникли проблемки которые пока что решить не удается

  • @makaroni1420
    @makaroni1420 7 месяцев назад +1

    Вопрос как обойтись без враппера, т.е. инициализировать стор в самом еомпоненте.

  • @user-vn3vo3zf2m
    @user-vn3vo3zf2m 6 месяцев назад

    А разве норм каждый раз создавать экземпляр RootStore при рендере App? Кажется, надо создать один экземпляр на все время жизни апки, независимо от ререндеров (а вдруг кто-то еще провайдером обернет снаружи и обновит провайдящееся значение?). Вижу, что в доке такое же, и собственно туда такой же вопрос.

    • @webstack-frontend1697
      @webstack-frontend1697  6 месяцев назад

      Не надо делать так, что бы App ререндерилась, даже без провайдеров это плохо, так как будет перерисовано все дерево. С созданием одного экземпляра я не экспериментировал. Если вдруг попробуешь, поделись здесь результатом)

  • @SuperWhiteskull
    @SuperWhiteskull 9 месяцев назад

    Я не понял, почему импортировать useStores() лучше, чем импортировать напрямую RootState?
    Сейчас перепишу проект себе, понажимаю, проверю.

    • @SuperWhiteskull
      @SuperWhiteskull 9 месяцев назад

      Понажимал. Всё работает. Мы просто из файла RootStore экспортируем инстанс класса new RootStore() и потом его везде используем. Во всех компонентах, где нам нужны будут посты, мы импортируем либо useStories() хук, либо наш RootState и из него достаём posts, но уже без оборачивания в провайдер. Если я что-то упускаю, напишите в комментариях, пожалуйста.

    • @webstack-frontend1697
      @webstack-frontend1697  9 месяцев назад

      @@SuperWhiteskull И для всех кому интересно, можно почитать тут
      mobx-cookbook.github.io/react-integration/context-api

  • @alekseypotashov
    @alekseypotashov 5 месяцев назад

    А кто является разработчиком Mobx? И с какого года он разрабатывается? Попытался нагуглить эту инфу и не нашел...

    • @webstack-frontend1697
      @webstack-frontend1697  5 месяцев назад

      Если вы про вырезку из прошлого комментария, то наверное я слишком заумно сказал, под инфой от разработчиков я имел ввиду инфу из документации. Это вырезка из документации mobx

  • @MirroXTV
    @MirroXTV Год назад +5

    Zustand всё таки удобнее

    • @webstack-frontend1697
      @webstack-frontend1697  Год назад

      Ещё и зависимость легковестнее)

    • @grenadier4702
      @grenadier4702 5 месяцев назад

      У Zustand , как по мне, жирный минус: селекторы

  • @r.chitector
    @r.chitector 6 месяцев назад +1

    Начало было воодушевляющим. Но к концу весь mobx превратился в redux. Т.е. принципиально особого выигрыша нет, просто чуть чуть стройнее. Редакс точто так же при старте вроде писать не много, но потом объем кода нарастает сильно, как и тут. Это не волшебная пилюля. Думаю стоит смотреть в сторону атомарных стейтов. Там совсем другой подход. За примеры спасибо!

    • @webstack-frontend1697
      @webstack-frontend1697  6 месяцев назад

      На вкус и цвет, как говорится)
      А волшебной пилюли как по мне вообще не существует среди стейт менеджеров😅

    • @zergzerg4844
      @zergzerg4844 6 месяцев назад

      Не понравился MobX попробуй Zusland

    • @grenadier4702
      @grenadier4702 5 месяцев назад +2

      И даже близко не редакс

    • @sanek1985t
      @sanek1985t Месяц назад

      Что такое атомарные стейты?

  • @MrMegaFirestarter
    @MrMegaFirestarter 11 месяцев назад +2

    Да, редакс выглядит намного сложнее ! почему же редакс всё ещё так популярен ?

    • @webstack-frontend1697
      @webstack-frontend1697  11 месяцев назад +1

      Редакс появился намного раньше. А многие не любят изучать новое и переучиваться. Да и если проекту уже много лет, то переписывать его на новый стейт менеджер слишком трудозатратно

    • @user-fc8wy6mg1j
      @user-fc8wy6mg1j 11 месяцев назад

      Просто редакс лучше, если говорить не о нативном редаксе, а о тулките и ртк. Вот его и используют.

    • @MrMegaFirestarter
      @MrMegaFirestarter 11 месяцев назад +3

      @@user-fc8wy6mg1j До это я использовал только RTK вместе с AsyncThunk или RTK Query - мощно, но очень запутанно и не понятно до конца, что там происходит под капотом и как именно это там работает. А количество кода с редьюрерами, персистами, экшенами и проч. екстраредьюсерами очень смущает. Сейчас делаю проект только с mobX - меня впечатляет.

    • @n1kson178
      @n1kson178 11 месяцев назад +2

      Ситуация как с телеграм и ватсапп. Ватсапп все ещё популярнее, т.к. появился раньше

    • @pick-pock
      @pick-pock 10 месяцев назад

      Инерция в сообществе

  • @user-ec2ee8so8u
    @user-ec2ee8so8u 8 месяцев назад +1

    Rxjs на минималках

  • @kotix_
    @kotix_ 29 дней назад

    не могу смотреть видео с клацаньем клавиатуры в 2024 году

    • @webstack-frontend1697
      @webstack-frontend1697  29 дней назад

      Во всем виноват Razer, который до сих пор, в 2024, делает свои ужасные механические клавиатуры)

  • @mephisto2226
    @mephisto2226 Месяц назад

    самое ужасное объяснение в рунете

  • @batpyiiikob7245
    @batpyiiikob7245 2 месяца назад +1

    Удобнее effector-а пока не видел..

    • @webstack-frontend1697
      @webstack-frontend1697  2 месяца назад +1

      Ну пи про effector в связке с atomic router видео на канал уже подъехало)