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

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024

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

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

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

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

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

  • @cwlstorage
    @cwlstorage Год назад +4

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

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

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

  • @pika4u380
    @pika4u380 6 месяцев назад +2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @Idealist2011
    @Idealist2011 5 месяцев назад +4

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

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

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

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

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

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

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

  • @bogdannovac6556
    @bogdannovac6556 Год назад +2

    good content
    clear, and explicit

  • @multtanker6365
    @multtanker6365 5 месяцев назад +1

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

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

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

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

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

    • @igetout
      @igetout 3 месяца назад

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

  • @Andrew-pr6nb
    @Andrew-pr6nb Год назад +1

    Спасибо!

  • @aimtimtimtim
    @aimtimtimtim 5 месяцев назад +1

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

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

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

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

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

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

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

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

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

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

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

  • @ЕвгенийЕ-б9б
    @ЕвгенийЕ-б9б Год назад +1

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

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

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

    • @VyacheslavMatyuk
      @VyacheslavMatyuk 11 месяцев назад

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

  • @imonutiy
    @imonutiy 15 дней назад

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

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

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

    • @imonutiy
      @imonutiy 10 дней назад

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

    • @ЕгорГоловин-в2й
      @ЕгорГоловин-в2й День назад

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

    • @webstack-frontend1697
      @webstack-frontend1697  День назад

      @@ЕгорГоловин-в2й mobx-cookbook.github.io/react-integration/context-api

    • @ЕгорГоловин-в2й
      @ЕгорГоловин-в2й День назад

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

  • @valentynlugovyi4789
    @valentynlugovyi4789 Год назад +1

    Ок, cool

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    +

  • @Вячеслав-у7ч7с
    @Вячеслав-у7ч7с 10 месяцев назад

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

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

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

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

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

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

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

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

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

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

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

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

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

  • @ingane27
    @ingane27 10 месяцев назад

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

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

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

    • @ingane27
      @ingane27 10 месяцев назад

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

  • @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ц Месяц назад

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

  • @олигТвистер
    @олигТвистер Год назад +1

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

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

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

    • @олигТвистер
      @олигТвистер Год назад

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

  • @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 Год назад

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

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

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

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

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

  • @ВиталийКопоров-и4в
    @ВиталийКопоров-и4в 11 месяцев назад +1

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

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

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

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

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

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

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

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

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

  • @ЕгорСлепцов-х6б
    @ЕгорСлепцов-х6б 10 месяцев назад +2

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

  • @ДанилАнтошкин-ш9т
    @ДанилАнтошкин-ш9т 9 месяцев назад +2

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