MobX против дерева состояний MobX

#javascript #reactjs #mobx #mobx-state-tree

#javascript #reactjs #mobx #mobx-state-tree

Вопрос:

Почему я должен использовать дерево состояний MobX вместо ванильного MobX? Кажется, что каждый раз, когда я читаю о MobX, MST упоминается в одном и том же месте. Кто-нибудь на самом деле использует только MobX сам по себе?

Вероятно, слишком общий вопрос…

Комментарии:

1. Это очень широкий вопрос и в основном основан на мнениях. MST хорош тем, что он очень самоуверенный, и гораздо сложнее принимать неправильные решения при структурировании ваших данных. MobX, с другой стороны, дает вам больше свободы в моделировании ваших данных по своему усмотрению и требует меньше накладных расходов, но намного проще создавать структуры данных, которые могут привести к проблемам в дальнейшем. Я думаю, что самый простой способ выяснить, что вам больше всего нравится, — попробовать оба подхода.

Ответ №1:

На самом деле, MST или дерево состояний MobX — это очень описательное название, если вдуматься.

MobX быстр, но не предоставляет никакой организационной структуры «из коробки», поэтому централизованные операции, такие как создание снимков всего состояния, восстановление состояния из снимка, автоматическая синхронизация отдельных хранилищ, перемещение во времени или горячая перезагрузка, либо невозможны, либо должны поддерживаться разработчиком.

MST поддерживает все вышеупомянутое (и многое другое) «из коробки», организуя отдельные хранилища в единое дерево интерактивных и взаимодействующих узлов.

Центральным в MST (mobx-state-tree) является концепция живого дерева. Дерево состоит из изменяемых, но строго защищенных объектов, обогащенных информацией о типе среды выполнения. Другими словами, каждое дерево имеет форму (информацию о типе) и состояние (данные). Из этого живого дерева автоматически генерируются неизменяемые, структурно разделяемые моментальные снимки.

Однако все это требует определенных затрат, и MST в целом работает несколько медленнее, чем чистый MobX. Поэтому, если вам не нужны эти функции, не стесняйтесь использовать только MobX.

Комментарии:

1. Извините, я случайно понизил голос. Кто-нибудь, пожалуйста, проголосуйте за меня. Спасибо: D

2. Я думаю, вы можете отменить это, нажав еще раз.

3. Извините, у него ограничение в 5 минут. Я проголосовал против 5 часов назад.

4. Если вы отредактируете (хотя бы одну букву) свой собственный ответ, я смогу проголосовать «за», а не «против».

5. И я тоже так сделал! 😀

Ответ №2:

Да, многие люди используют «ванильный» MobX — он имеет огромную ценность сам по себе. Основная концепция использования «наблюдаемого» состояния является убийственной особенностью MobX. Что касается меня, то использование его вместе с React позволило мне безбоязненно обрабатывать большие объемы подключенных данных в браузере, не беспокоясь о проблемах с «обновлением» или «вычисляемым значением».

Дополнительный слой «MST» просто добавляет больше (самоуверенной) структуры. (хорошо, если вам нравится, когда вам говорят, что делать 😉 Это больше похоже на диспетчер состояний в стиле «Redux», где четко определены переходы состояний и возможны такие вещи, как перемещение во времени. На мой взгляд, MobX сам по себе решает множество проблем, и я предлагаю всем новичкам придерживаться «ванильного» MobX и даже не думать о MST, пока вы действительно не оцените то, что получаете от самого MobX.

Ответ №3:

Я не собираюсь вдаваться в пространное сравнение.

Вкратце, MobX — это неавторизованная библиотека утилит, в то время как MST — это самостоятельное решение, построенное поверх MobX.

Если вы новичок в MobX, просто используйте MST. Сначала освоитесь с его концепциями, а затем принимайте решение о своем втором проекте 🙂

Bare MobX невероятно гибкий и может использоваться очень творчески. Но вы должны понимать, что вы с этим делаете. Это немного похоже на черную магию, мощную, но нужно быть действительно осторожным.

Комментарии:

1. Ты это хотел сказать? (если вы новичок, просто используйте MST ) Разве вы не имеете в виду просто использовать MobX?

Ответ №4:

Я использую MST для приложения react native. Ссылки MST также очень удобны для определения модели данных. Я выбираю MST вместо mobx для функции ссылок.

Ответ №5:

MobX предлагает прозрачное точечное управление состоянием. Простой, эффективный и прямой.

Но в Redux много общего, поэтому MST.

MST оборачивает ядро реактивного движка MobX в шаблон потока: косвенный, неспецифичный и требующий массивного шаблона. Ни одно из заявленных преимуществ не влияет на эффективность работы программиста.

Если бы это был мой выбор, я бы выбрал MobX или, если мне нравятся шаблоны, Redux, в котором будет больше инструментов.

Ответ №6:

Обычно рекомендуется использовать дерево состояний MobX (MST) вместо ванильного MobX, когда вам нужен более структурированный и взвешенный подход к моделированию данных, более высокая производительность или такие функции, как моментальные снимки и отладка во времени. Однако, если вам не нужны эти функции, вы можете обнаружить, что достаточно ванильного MobX. Кроме того, если у вас есть существующее приложение MobX, возможно, нет необходимости переключаться на MST.