1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/vuejs-pinia

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Pinia

Интуитивно понятный, типобезопасный и гибкий Store для Vue

  • 💡 Интуитивный
  • 🔑 Типобезопасный
  • ⚙️ Поддержка devtools
  • 🔌 Расширяемый
  • 🏗 Модульный по дизайну
  • 📦 Чрезвычайно лёгкий
  • ⛰️ Модуль Nuxt

Pinia работает как с Vue 2, так и с Vue 3.

Название Pinia — это самое близкое английское произношение слова «pineapple» (ананас) на испанском языке: «piña». Ананас на самом деле представляет собой группу отдельных цветов, которые соединяются вместе, образуя множественный плод. Подобно магазинам, каждый из них рождается индивидуально, но в конце концов они все связаны. Это также вкусный тропический фрукт, произрастающий в Южной Америке.

👉 Демо с Vue 3 на StackBlitz

👉 Демо с Nuxt 3 на StackBlitz

Помогите мне продолжать работать над этим проектом 💚

Серебряные спонсоры

Route Optimizer and Route Planner Software Prefect VueMastery

Бронзовые спонсоры

Storyblok Nuxt UI Pro Templates Antony<picture> <source srcset="https://avatars.githubusercontent.com/u/2486424?u=7b0c73ae5d090ce53bf59473094e9606fe082c59&v=4" media="(prefers-color-scheme: dark)" height="26px" alt="Stanislas Ormières" /> <img src="https://avatars.githubusercontent.com/u/2486424?u=7b0c73ae5d090ce53bf59473094e9606fe082c59&v=4" height="26px" alt="Stanislas Ormières" /> </picture> Stanislas Ormières


FAQ

Несколько заметок о проекте и возможных вопросах:

Q: Является ли Pinia преемником Vuex?

A: Да.

Q: Что насчёт динамических модулей?

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

Установка

# или pnpm или yarn
npm install pinia

Если вы используете Vue <2.7, обязательно установите последнюю версию @vue/composition-api:

npm install pinia @vue/composition-api

Использование

Установите плагин

Создайте pinia (корневой магазин) и передайте его приложению:

// Vue 3
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from './App.vue'

const pinia = createPinia()
const app = createApp(App)

app.use(pinia)
app.mount('#app')
// Vue 2
import { createPinia, PiniaVuePlugin } from 'pinia'

Vue.use(PiniaVuePlugin)
const pinia = createPinia()

new Vue({
  el: '#app',
  // другие параметры...
  // ...
  // обратите внимание, что один и тот же экземпляр `pinia` может использоваться в нескольких приложениях Vue на одной странице
  pinia,
})

Для получения более подробных инструкций, включая конфигурацию Nuxt, см. документацию.

Создайте хранилище

Вы можете создать столько хранилищ, сколько захотите, и каждое из них должно существовать в разных файлах:

import { defineStore } from 'pinia'

// main — это имя магазина. Оно уникально для вашего приложения и будет отображаться в devtools
export const useMainStore = defineStore('main', {
  // функция, которая возвращает новое состояние
  state: () => ({
    counter: 0,
    name: 'Eduardo',
  }),
  // необязательные геттеры
  getters: {
    // геттеры получают состояние в качестве первого параметра
    doubleCounter: (state) => state.counter * 2,
    // используйте геттеры в других геттерах
    doubleCounterPlusOne(): number {
      return this.doubleCounter + 1
    },
  },
  // необязательные действия
  actions: {
    reset() {
      // `this` — это экземпляр магазина
      this.counter = 0
    },
  }
})

defineStore возвращает функцию, которую необходимо вызвать, чтобы получить доступ к магазину:

import { useMainStore } from '@/stores/main'
import { storeToRefs } from 'pinia'

export default defineComponent({
  setup() {
    const main = useMainStore()

    // извлечь конкретные свойства магазина
    const { counter, doubleCounter } = storeToRefs(main)

    return {
      // предоставляет доступ ко всему магазину в шаблоне
      main,
      // даёт доступ только к определённому состоянию или геттеру
      counter,
      doubleCounter,
    }
  }
})

Документация

Чтобы узнать больше о Pinia, посетите её документацию.

Лицензия

MIT

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Интуитивный, типобезопасный, лёгкий и гибкий Store для Vue с использованием composition api и поддержкой DevTools. Развернуть Свернуть
TypeScript и 6 других языков
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/vuejs-pinia.git
git@api.gitlife.ru:oschina-mirror/vuejs-pinia.git
oschina-mirror
vuejs-pinia
vuejs-pinia
v2