Путаница между mobx-state-tree и mobx-keystone. Когда использовать что?

#mobx #mobx-react #state-management #react-state-management #mobx-state-tree

#mobx #mobx-реагировать #управление состоянием #реагирование-управление состоянием #mobx-state-tree

Вопрос:

Оба рекомендуются на официальной странице Mobx, если вам нужен самоуверенный способ использования mobx для управления состоянием.

Основываясь на этих (1,2), keystone кажется улучшением дерева состояний. Имея все, что есть в дереве состояний больше. Нигде я не мог найти ничего, что в дереве состояний есть, чего нет в keystone.


сравнение

Я вижу, что keystone нигде не является таким зрелым, как state-tree. Это, вероятно, главное, что мешает мне выбрать его вместо этого. Каковы другие преимущества дерева состояний над keystone?

PS Это будет использоваться в приложении React.

Ответ №1:

Я текущий сопровождающий MobX-State-Tree. Я думаю, что основное преимущество MST перед MobX-Keystone заключается в том, что MST используется более широко и имеет более широкую стороннюю поддержку. Например, mobx-devtools поддерживает MST, но не MobX-Keystone, как и Reactotron.

Учитывая все сказанное, я очень заинтересован в изучении MobX-Keystone для нашего собственного использования в моей консалтинговой компании. Несмотря на то, что я поддерживаю MST, я не против MobX-Keystone, и гораздо лучшая поддержка TypeScript очень заманчива. Если мы в конечном итоге используем его в проекте, и все идет хорошо, мы, вероятно, создадим для него поддержку Reactotron.

Я надеюсь, что эта перспектива поможет.

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

Ответ №2:

Сначала спросите себя, действительно ли вам нужны эти библиотеки, потому что вы можете далеко продвинуться, используя только mobx и старые добрые шаблоны ООП. В официальных документах у вас есть пример хранилища, которое выполняет автоматическое сохранение и сериализацию.

Сказав это, я бы выбрал mobx-keystone. Typescript работает прямо из коробки, и вы можете использовать классы для создания своего хранилища, что, ИМХО, проще, чем хранилища MST. Кроме того, автор очень отзывчивый, и он также является участником библиотеки mobx.

Ответ №3:

mobx-keystone это супер круто. После некоторого использования обеих двух библиотек я бы рекомендовал использовать их mobx-state-tree во всех возможных случаях. Это гораздо более интуитивно понятно и проще в освоении. Это сэкономило много времени для моего проекта (переключение с zustand на jotai на mobx-keystone, IMO каждый следующий немного лучше предыдущего в моем случае использования)

Ответ №4:

После тщательного тестирования / чтения исходного кода / игры с набором тестов кажется, что mobx-keystone обеспечивает более надежную работу разработчика с Typescript, а также имеет достаточно переходных люков, если вам нужно работать с кодом, чувствительным к производительности. Я бы реализовал небольшую проблемную (но достаточно сложную) проблему с обеими библиотеками, чтобы судить самостоятельно.