Плагины в Pinia

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

Определение простого плагина

Для создания плагина в Pinia необходимо зарегистрировать его с помощью метода pinia.use(). Пример простого плагина, который добавляет метод логирования

Этот плагин использует хук store.$onAction, который позволяет прослушивать вызовы экшенов. Он логирует имя экшена, его аргументы, результат выполнения или ошибку

Регистрация плагина

После того как мы создали плагин, нужно зарегистрировать его в Pinia

Здесь
  • pinia.use(loggerPlugin) подключает плагин ко всем хранилищам, которые будут использоваться в приложении.

Пример использования плагина в хранилище

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

При вызове экшенов addItem или fetchItems, плагин будет логировать их действия в консоль

Плагин для сохранения состояния в localStorage

Одним из популярных применений плагинов является сохранение состояния в localStorage для поддержания данных после перезагрузки страницы. Давайте создадим такой плагин

Этот плагин
  • При инициализации хранилища пытается загрузить сохранённое состояние из localStorage.
  • Слушает любые изменения в состоянии хранилища и сохраняет их в localStorage.

Регистрация плагина для сохранения состояния

Подключаем плагин сохранения состояния

Теперь, каждое хранилище, подключённое к Pinia, автоматически сохраняет своё состояние в localStorage

Использование плагина сохранения состояния в хранилище

Пример использования хранилища с плагином сохранения состояния

Теперь, после входа пользователя, его данные будут сохранены в localStorage, и при перезагрузке страницы они будут восстановлены.

Глобальные свойства с плагинами

Плагины также могут добавлять глобальные свойства к каждому хранилищу. Например, добавим плагин, который добавляет ко всем хранилищам метод для сброса состояния:

Подключение плагина:

Теперь все хранилища автоматически получают метод $reset, который сбрасывает их состояние до начального:

Заключение

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