Skip to content
Перевод синхронизирован с документацией от , хэш коммита 59ec609.

Использование без setup()

Pinia можно использовать даже если вы не используете сomposition API (если вы используете Vue <2.7, вам все равно нужно установить плагин @vue/composition-api). Хотя мы рекомендуем вам попробовать Composition API и изучить его, возможно, сейчас не самое подходящее время для вас и вашей команды, вы можете находиться в процессе миграции приложения или по какой-либо другой причине. Существует несколько функций:

Предоставление доступа ко всему хранилищу

Если вам нужен доступ практически ко всему в хранилище, то может быть слишком сложно сопоставлять каждое свойство хранилища... Вместо этого вы можете получить доступ ко всему хранилищу с помощью mapStores():

js
import { mapStores } from 'pinia'  // даны два хранилища со следующими ids const useUserStore = defineStore('user', {  // ... }) const useCartStore = defineStore('cart', {  // ... })  export default {  computed: {  // обратите внимание, что мы передаем не массив, а просто одно хранилище за другим  // каждое хранилище будет доступно как его id + 'Store'  ...mapStores(useCartStore, useUserStore),  },   methods: {  async buyStuff() {  // используйте их где угодно!  if (this.userStore.isAuthenticated()) {  await this.cartStore.buy()  this.$router.push('/purchased')  }  },  }, }

По умолчанию Pinia добавляет суффикс "Store" к id каждого хранилища. Вы можете настроить это поведение, вызвав функцию setMapStoreSuffix():

js
import { createPinia, setMapStoreSuffix } from 'pinia'  // полностью удаляем суффикс: this.user, this.cart setMapStoreSuffix('') // this.user_store, this.cart_store (ничего страшного, я вас не осуждаю) setMapStoreSuffix('_store') export const pinia = createPinia()

TypeScript

По умолчанию все map-помощники поддерживают автозавершение, и вам не нужно ничего делать. Если вы вызываете setMapStoreSuffix(), чтобы изменить суффикс "Store", вам также потребуется добавить его где-то в файле TS или в файле global.d.ts. Самым удобным местом было бы то же место, где вы вызываете setMapStoreSuffix():

ts
import { createPinia, setMapStoreSuffix } from 'pinia'  setMapStoreSuffix('') // полностью удалить суффикс export const pinia = createPinia()  declare module 'pinia' {  export interface MapStoresCustomization {  // установить его в то же значение, что и выше  suffix: ''  } }

Предупреждение

Если вы используете файл декларации TypeScript (например, global.d.ts), не забудьте указать в его верхней части import 'pinia' для раскрытия всех существующих типов.

Build smarter with AI
Join a free workshop to explore LLMs and advanced AI tools.
Register now
October 22