Перед тем, как приступить к освоению библиотек хранения состояния, настоятельно рекомендую прочитать статью "Фронтенд фреймворки" и начать с изучения фреймворков.
А если вы все еще читаете эту статью, я подозреваю, что вы уже ознакомились с понятием "локальное состояние" в фронтенд фреймворках.
А что, если я скажу вам, что можно создать еще и "глобальное" хранилище состояний? 😱
Один из важнейших моментов в разработке - это способность приложения скейлиться (то есть масштабироваться, расти и тд). И важно понимать, что библиотеки хранения состояния - это только один из способов масштабировать ваше приложение. Если не хотите создавать сторонние зависимости, не торопитесь с их использованием.
Какие библиотеки использовать?
React
Давайте сравним две основные библиотеки для React - MobX и Redux.
MobX использует экспериментальный синтаксис JS - декораторы. При написании с MobX используется ООП подход, и именно поэтому процесс написания будет выглядеть более логичным для большинства программистов. Код, написанный с использованием Mobx, гораздо чище кода Redux.
Redux использует функциональный подход программирования и требует установки дополнительных зависимостей. Например, для использования асинхронного кода нужно разобраться в библиотеках вроде Redux Thunk и Redux Saga. Хорошо скейлится и поэтому подходит для больших приложений.
Изучение
MobX проще освоить благодаря ООП, код чище и порог вхождения ниже. Комьюнити меньше, но информации для изучения достаточно. Тем не менее, я по своему опыту ощутил, что, если использовать эту библиотеку с React, сложно найти актуальные туториалы для современного подхода написания кода (с использованием хуксов).
Redux поначалу кажется более запутанным из-за функционального программирования. Необходимость изучения сторонних зависимостей повышает порог вхождения и не способствует быстрому старту. Комьюнити больше по сравнению с MobX и актуальных туториалов очень много.
Дебаг
Расширения для удобного отслеживания состояния на каждом шаге
Можно выбрать Redux или Mobx либо спроектированные на их основе библиотеки под Vue, но наиболее оптимальным решением является официальная Flux-подобная библиотека Vuex.
Принцип изучения прост, но само обучение, как всегда, выглядит не так радужно:
Открывайте документацию, используйте информацию из разделов "Полезные ресурсы" и параллельно пробуйте создать супер простое тестовое приложение с использованием библиотеки хранения состояния (например "Счетчик", который можно увеличивать, уменьшать и т.д.). Так вы наглядно поймете как они работают.
Попробуйте внедрить библиотеку хранения состояния в свой существующий или новый проект. Перестройте структуру своих компонентов с использованием нового глобального состояния. Так вы потихоньку начнете понимать, зачем данные библиотеки существуют и как они используются.
Послесловие
Как уже было сказано выше, не старайтесь установить слишком много зависимостей "на всякий случай" в ваш проект. Используйте библиотеки хранения состояний с умом и тогда, когда вашему приложению это действительно необходимо. При правильном подходе данные библиотеки помогут создать масштабируемое и хорошо поддерживаемое приложение, при неправильном - только все усложнят.
Продолжайте учиться, практикуйтесь и хорошо высыпайтесь. Удачи! 🖖