Плагины в Pinia
Плагины в Pinia позволяют расширять функциональность хранилищ, добавляя различные методы, свойства или даже изменяя их поведение. С помощью плагинов можно интегрировать дополнительные возможности, такие как логирование, сохранение состояния в локальное хранилище или другие кастомные функции.
Определение простого плагина
Для создания плагина в Pinia необходимо зарегистрировать его с помощью метода pinia.use(). Пример простого плагина, который добавляет метод логирования
Этот плагин использует хук store.$onAction, который позволяет прослушивать вызовы экшенов. Он логирует имя экшена, его аргументы, результат выполнения или ошибку
Регистрация плагина
После того как мы создали плагин, нужно зарегистрировать его в Pinia
- pinia.use(loggerPlugin) подключает плагин ко всем хранилищам, которые будут использоваться в приложении.
Пример использования плагина в хранилище
Теперь любое хранилище, которое использует экшены, будет автоматически логировать свои действия благодаря подключенному плагину. Например
При вызове экшенов addItem или fetchItems, плагин будет логировать их действия в консоль
Плагин для сохранения состояния в localStorage
Одним из популярных применений плагинов является сохранение состояния в localStorage для поддержания данных после перезагрузки страницы. Давайте создадим такой плагин
- При инициализации хранилища пытается загрузить сохранённое состояние из localStorage.
- Слушает любые изменения в состоянии хранилища и сохраняет их в localStorage.
Регистрация плагина для сохранения состояния
Подключаем плагин сохранения состояния
Теперь, каждое хранилище, подключённое к Pinia, автоматически сохраняет своё состояние в localStorage
Использование плагина сохранения состояния в хранилище
Пример использования хранилища с плагином сохранения состояния
Теперь, после входа пользователя, его данные будут сохранены в localStorage, и при перезагрузке страницы они будут восстановлены.
Глобальные свойства с плагинами
Плагины также могут добавлять глобальные свойства к каждому хранилищу. Например, добавим плагин, который добавляет ко всем хранилищам метод для сброса состояния:
Подключение плагина:
Теперь все хранилища автоматически получают метод $reset, который сбрасывает их состояние до начального:
Заключение
Плагины в Pinia открывают большие возможности для расширения функциональности хранилищ. С их помощью можно добавлять дополнительные методы, логировать действия, сохранять состояние в локальном хранилище и выполнять другие задачи, связанные с управлением данными. Они делают Pinia более гибким и настраиваемым инструментом, который подходит для проектов любой сложности.