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

Поділитися
Вставка
  • Опубліковано 20 січ 2025

КОМЕНТАРІ • 110

  • @webstack-frontend1697
    @webstack-frontend1697  Рік тому

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

  • @Gurgen-k2n
    @Gurgen-k2n 11 місяців тому +4

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

  • @MgsMen
    @MgsMen 6 місяців тому +5

    Спасибо огромное дружище !! Устроился full stack. Нечего не шарю за фронт. Даже за JS. А у нас на проекте TypeScript и Mobx и твой пример прям помогает разобраться здесь и сейчас. Ни у кого не нашёл с примером Mobx + TS. А у тебя было, причём всё круто показал и объяснил. Жирнющий лайк тебе и спасибо !!

  • @rasul7702
    @rasul7702 Рік тому +3

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

  • @RuslanZolotoy
    @RuslanZolotoy Рік тому +1

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

  • @dahulivsiozanjato
    @dahulivsiozanjato Рік тому +3

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

  • @lyamoore2194
    @lyamoore2194 6 місяців тому +1

    Просто, понятно и доступно. Спасибо!

  • @pika4u380
    @pika4u380 10 місяців тому +2

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

  • @ДанилАнтошкин-ш9т

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

  • @ЕгорСлепцов-х6б
    @ЕгорСлепцов-х6б Рік тому +2

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

  • @banpoprichinechan
    @banpoprichinechan 10 місяців тому

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

  • @Idealist2011
    @Idealist2011 9 місяців тому +5

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

  • @sweety_emperor
    @sweety_emperor 10 місяців тому +1

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

  • @rossmanov
    @rossmanov 10 місяців тому +5

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

  • @JoSmith0
    @JoSmith0 3 місяці тому +1

    Видео огонь!

  • @kostasancez2358
    @kostasancez2358 Рік тому +3

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

  • @WorldCount
    @WorldCount 11 місяців тому +5

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

  • @bogdannovac6556
    @bogdannovac6556 Рік тому +2

    good content
    clear, and explicit

  • @igetout
    @igetout 7 місяців тому +2

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

    • @webstack-frontend1697
      @webstack-frontend1697  7 місяців тому +1

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

    • @igetout
      @igetout 7 місяців тому

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

  • @valentineserebreanu398
    @valentineserebreanu398 Рік тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  11 місяців тому +1

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

    • @valentineserebreanu398
      @valentineserebreanu398 11 місяців тому

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

  • @idontknowserjk8550
    @idontknowserjk8550 Рік тому +1

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

  • @multtanker6365
    @multtanker6365 9 місяців тому +1

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

  • @pashabezk
    @pashabezk 11 місяців тому +2

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

  • @Andrew-pr6nb
    @Andrew-pr6nb Рік тому +1

    Спасибо!

  • @makaroni1420
    @makaroni1420 Рік тому +1

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

  • @imonutiy
    @imonutiy 4 місяці тому

    По-идее заворачивать в observer компоненты уже не нужно если есть Provider от контекста?

    • @webstack-frontend1697
      @webstack-frontend1697  4 місяці тому

      @@imonutiy Насколько я знаю провайдера не достаточно

    • @imonutiy
      @imonutiy 4 місяці тому

      @@webstack-frontend1697 Да, все правильно, перепроверил

    • @egor33120
      @egor33120 3 місяці тому

      Не нужно оборачивать компонент в observer, если его родительский компонент уже обернут в Provider.
      Компонент Provider делает все состояние, определенное в MobX Store, доступным для всех его потомков. Это означает, что все дочерние компоненты могут получить доступ к состоянию и автоматически перерендериться при его изменении.
      Observer - это декоратор, который делает компонент наблюдателем за изменениями в состоянии. Если ваш родительский компонент уже обернут в Provider, то все дочерние компоненты автоматически являются наблюдателями, и observer становится избыточным.

    • @webstack-frontend1697
      @webstack-frontend1697  3 місяці тому

      @@egor33120 mobx-cookbook.github.io/react-integration/context-api

    • @egor33120
      @egor33120 3 місяці тому

      @@webstack-frontend1697 Перепроверил. Вы правы. В примере с Wrapper, как представлено в видео, действительно, нужно использовать observer, однако уже в дочерних компонентах его использование избыточно. Упустил контекст вопроса, спасибо что поправили.
      - оборенутый в observer
      - observer избыточен

  • @aimtimtimtim
    @aimtimtimtim 9 місяців тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  9 місяців тому

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

  • @ingane27
    @ingane27 Рік тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

    • @ingane27
      @ingane27 Рік тому

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

  • @олигТвистер
    @олигТвистер Рік тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому +4

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

    • @олигТвистер
      @олигТвистер Рік тому

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

  • @Bugagych
    @Bugagych Рік тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому +2

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

    • @Bugagych
      @Bugagych Рік тому

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

    • @skirrsolo4077
      @skirrsolo4077 Рік тому

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

  • @ЕвгенийЕ-б9б
    @ЕвгенийЕ-б9б Рік тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому +3

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

    • @VyacheslavMatyuk
      @VyacheslavMatyuk Рік тому

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

  • @valentynlugovyi4789
    @valentynlugovyi4789 Рік тому +1

    Ок, cool

  • @Вячеслав-у7ч7с
    @Вячеслав-у7ч7с Рік тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

  • @SuperWhiteskull
    @SuperWhiteskull Рік тому

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

    • @SuperWhiteskull
      @SuperWhiteskull Рік тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

    • @ОлегСартаков-д6ц
      @ОлегСартаков-д6ц 5 місяців тому

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

  • @alekseypotashov
    @alekseypotashov Рік тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

  • @iGotton
    @iGotton 7 місяців тому +1

    +

  • @r.chitector
    @r.chitector Рік тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

    • @zergzerg4844
      @zergzerg4844 Рік тому

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

    • @grenadier4702
      @grenadier4702 Рік тому +2

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

    • @sanek1985t
      @sanek1985t 9 місяців тому

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

  • @MrMegaFirestarter
    @MrMegaFirestarter Рік тому +2

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому +1

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

    • @ВсеволодЗахаров-я1ы
      @ВсеволодЗахаров-я1ы Рік тому

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

    • @MrMegaFirestarter
      @MrMegaFirestarter Рік тому +3

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

    • @n1kson178
      @n1kson178 Рік тому +2

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

    • @pick-pock
      @pick-pock Рік тому

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

  • @MirroXTV
    @MirroXTV Рік тому +5

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

    • @webstack-frontend1697
      @webstack-frontend1697  Рік тому

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

    • @grenadier4702
      @grenadier4702 Рік тому

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

  • @kotix_
    @kotix_ 8 місяців тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  8 місяців тому

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

  • @ВиталийКопоров-и4в

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

  • @svk29
    @svk29 7 днів тому

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

    • @webstack-frontend1697
      @webstack-frontend1697  7 днів тому

      @@svk29 в любом мало мальски крупном проекте, без стейт менеджера не минуемо образуется такой антипаттерн как props driling. Который приведёт к трудностями при масштабировании, переиспльзовании и отладке кода

    • @svk29
      @svk29 7 днів тому

      @webstack-frontend1697 Да, оно конечно зависит от проекта, но для большинства каких нибудь магазинчиков и т.д. достаточно контекста. Одни плюсы, легче вес, шустрее работает и читабельность текста существенно улучшилась. По возможности теперь бу избегать редакса и прочих стейтов. Есть еще реакт квиари и свр, они заменяют ртк.

  • @mephisto2226
    @mephisto2226 8 місяців тому

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

    • @nics51
      @nics51 3 місяці тому

      самое ахуенное, глаза шире открой и внимательно слушай

  • @batpyiiikob7245
    @batpyiiikob7245 9 місяців тому +1

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

    • @webstack-frontend1697
      @webstack-frontend1697  9 місяців тому +1

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