chelovekmuravei
@chelovekmuravei
\(-_-)/ раз два три четыре

Многократное использование store vue pinia?

Подскажите как правильно сделать, допустим у меня есть store, но я хочу сделать несколько сторов. Как это сделать? Можно сделать 3 одинаковых файла, можно сделать внутри store массив store c методом выбора нужно по ID или Name. не знаю как лучше. Допустим у нас уже есть
import { defineStore } from 'pinia'

const useCounterStore = defineStore('counterStore', {
  state: () => ({
    counter: 0,
  }),
})
И каждый раз делая
import { useStore } from '@/stores/counter'

export default {
  setup() {
    const store = useStore()

    return {
      store,
    }
  },
}
Я обращаюсь к одному и тому же store. Но я хочу иметь несколько независимых store. Как быть? Единственный способ который я знаю, это
document.querySelectorAll<HTMLElement>('.app').forEach(el => {
    const pinia = createPinia()
    const ap = createApp(App).use(router).use(pinia).mount(el)
})

Но это уже не то, это получается полностью независимые компоненты root.
  • Вопрос задан
  • 371 просмотр
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
import { defineStore } from 'pinia'

const storeDefinition = {
  state: () => {
    return { count: 0 }
  },
  actions: {
    increment() {
      this.count++
    },
  },
}
const stores = {}
export function getCounterStore(key) {
  if (!stores[key]) stores[key] = defineStore(key, storeDefinition)
  return stores[key]()
}


в других файлах
import {getCounterStore} from 'awesome-counter-store.js'

...
const store1 = getCounterStore('key1')
const store2 = getCounterStore('key2')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы