CommunityCodierung & Entwicklunggithub.com

vuejs-ai/vue-pinia-best-practices

Pinia Stores, State-Management-Muster, Store-Setup und Reaktivität mit Stores.

Was ist vue-pinia-best-practices?

Dieser Skill bietet umfassende Anleitungen und Best Practices für die Verwendung von Pinia, dem bevorzugten State-Management-Tool für Vue.js-Anwendungen. Er richtet sich an Entwickler, die mit Vue.js arbeiten, und deckt alle wichtigen Aspekte ab: von der Store-Erstellung und dem Setup über verschiedene State-Management-Muster bis hin zur Nutzung der Reaktivität innerhalb der Stores. Der Skill unterstützt sowohl die Options-API als auch die Composition-API und zeigt, wie man Stores strukturiert, Daten verwaltet und reaktive Eigenschaften effizient einsetzt. Mit klaren Beispielen und Erklärungen hilft er, typische Fehler zu vermeiden und skalierbare, wartbare Anwendungen zu entwickeln. Die Plattform ist generisch für Vue.js-Projekte mit Pinia und kann in Verbindung mit Entwicklungsumgebungen wie Cursor oder Codex verwendet werden.

Funktioniert mit~Claude Code~Codex CLI~Cursor
Part ofReact
npx skills add https://github.com/vuejs-ai/skills/tree/main/skills/vue-pinia-best-practices

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht vue-pinia-best-practices?

Pinia Stores, State-Management-Muster, Store-Setup und Reaktivität mit Stores.

Einführung

Dieser Skill enthält Best Practices für die Arbeit mit Pinia in Vue.js-Anwendungen. Pinia ist ein intuitives, typsicheres und leichtgewichtiges State-Management-Tool, das die Erstellung und Verwaltung von Stores vereinfacht.

Hauptkonzepte

Store-Definition

Ein Store wird mit defineStore definiert. Es gibt zwei Hauptansätze:

  • Options-API: Ähnlich wie bei Vue-Komponenten, mit state, getters und actions.
  • Composition-API: Verwendet Setup-Funktionen, ähnlich wie setup() in Komponenten.

Beispiel Options-API:

import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  getters: {
    doubleCount: (state) => state.count * 2
  },
  actions: {
    increment() {
      this.count++
    }
  }
})

Beispiel Composition-API:

import { ref, computed } from 'vue'
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', () => {
  const count = ref(0)
  const doubleCount = computed(() => count.value * 2)

  function increment() {
    count.value++
  }

  return { count, doubleCount, increment }
})

Reaktivität mit Stores

Pinia Stores sind reaktiv. Wenn Sie einen Store in einer Komponente verwenden, reagiert die Komponente automatisch auf Änderungen der Store-Daten.

import { useCounterStore } from '@/stores/counter'

export default {
  setup() {
    const counter = useCounterStore()

    return {
      counter
    }
  }
}

State-Management-Muster

  • Einzelner Store: Verwenden Sie einen einzelnen Store für kleine Anwendungen.
  • Mehrere Stores: Trennen Sie Logik in mehrere Stores für größere Anwendungen.
  • Store-übergreifende Kommunikation: Nutzen Sie Actions, um Daten zwischen Stores auszutauschen, oder verwenden Sie den $reset()-Befehl.

Best Practices

  • Verwenden Sie die Composition-API für mehr Flexibilität und Typsicherheit.
  • Halten Sie Stores klein und fokussiert auf eine bestimmte Funktionalität.
  • Nutzen Sie Getters für abgeleitete Zustände, um Code-Duplizierung zu vermeiden.
  • Aktionsnamen: Verwenden Sie aussagekräftige Namen für Actions.
  • Fehlerbehandlung: Fügen Sie Fehlerbehandlung in Actions hinzu.

Beispielprojekt

Ein einfaches Beispiel, das einen Zähler-Store verwendet:

// stores/counter.js
import { defineStore } from 'pinia'

export const useCounterStore = defineStore('counter', {
  state: () => ({
    count: 0
  }),
  actions: {
    increment() {
      this.count++
    }
  }
})

// components/Counter.vue
<template>
  <div>
    <p>Zähler: {{ counter.count }}</p>
    <button @click="counter.increment">Erhöhen</button>
  </div>
</template>

<script setup>
import { useCounterStore } from '@/stores/counter'

const counter = useCounterStore()
</script>

Weitere Informationen

Weitere Details finden Sie in der offiziellen Pinia-Dokumentation.

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

Verwandte Skills