pinia
تعريف متاجر Vue باستخدام Pinia
يتطلب بناء تطبيقات Vue إدارة حالة قابلة للتنبؤ عبر المكونات. توفر Pinia واجهة برمجة تطبيقات آمنة من حيث النوع وبديهية لتعريف المتاجر مع الحالة والمُحصِّلات والإجراءات. توفر هذه المهارة مراجع شاملة لبناء أنماط قابلة للتوسع لإدارة حالة Vue.
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「pinia」。 How do I persist Pinia state to localStorage?
預期結果:
- Use a Pinia plugin to synchronize state with localStorage:
- ```ts
- import { defineStore } from 'pinia'
- import { watch } from 'vue'
- export const useCounterStore = defineStore('counter', {
- state: () => ({ count: 0, name: 'Eduardo' }),
- })
- // Watch for changes and persist to localStorage
- watch(
- useCounterStore(),
- (state) => {
- localStorage.setItem('counter', JSON.stringify(state))
- },
- { deep: true }
- )
- ```
正在使用「pinia」。 What is the difference between Option Stores and Setup Stores?
預期結果:
- **Option Stores** use an object with properties like state, getters, and actions:
- ```ts
- export const useCounterStore = defineStore('counter', {
- state: () => ({ count: 0 }),
- getters: { doubleCount: (state) => state.count * 2 },
- actions: { increment() { this.count++ } }
- })
- ```
- **Setup Stores** use a function returning refs and functions:
- ```ts
- export const useCounterStore = defineStore('counter', () => {
- const count = ref(0)
- const doubleCount = computed(() => count.value * 2)
- function increment() { count.value++ }
- return { count, doubleCount, increment }
- })
- ```
正在使用「pinia」。 How do I reset all stores in tests?
預期結果:
- Use setActivePinia and createPinia with beforeEach:
- ```ts
- import { setActivePinia, createPinia } from 'pinia'
- beforeEach(() => {
- const pinia = createPinia()
- setActivePinia(pinia)
- })
- it('resets state', () => {
- const store = useCounterStore()
- store.count = 5
- // Reset for next test
- store.$reset()
- expect(store.count).toBe(0)
- })
- ```
安全審計
安全All 292 static findings are false positives. This skill contains only markdown documentation with code examples for Pinia (official Vue state management library). No executable code, network operations, file system access, or command execution. Scanner misinterpreted markdown code blocks as shell commands and function names like defineStore as cryptographic functions.
品質評分
你能建構什麼
بناء متاجر المصادقة للمستخدمين
إنشاء متاجر Pinia لإدارة جلسات المستخدم وحالة المصادقة والصلاحيات عبر تطبيقات Vue.
تنفيذ تدفقات السلة والدفع
تصميم متاجر للوظائف التجارية الإلكترونية بما في ذلك حالة سلة التسوق وكتالوجات المنتجات ومعالجة الطلبات.
إنشاء مكتبات حالة UI المشتركة
تطوير إضافات Pinia قابلة لإعادة الاستخدام ومتاجر قابلة للتأليف لإدارة السمات ومربعات الحوار المشعة وأنظمة الإشعارات.
試試這些提示
كيف أحدد متجر Pinia لإدارة تفضيلات المستخدم مثل إعدادات السمة واللغة؟ اعرض كلاً من صيغتي Options API و Composition API.
إنشاء متجر Pinia لسلة تسوق يستخدم المُحصِّلات لحساب المجموع الفرعي والضريبة والإجمالي. اعرض كيفية الوصول إلى هذه القيم المحسوبة في المكونات.
كتابة متجر Pinia لمعالجة استدعاءات 비동ائي API مع كتابة TypeScript الصحيحة للإجراءات والحمولة وقيم الإرجاع.Include أنماط معالجة الأخطاء.
كيف يمكنني تأليف عدة متاجر Pinia معًا؟ اعرض نمط حيث يوفر متجر المصادقة بيانات المستخدم التي يستخدمها متجر السلة للتخصيص.
最佳實務
- استخدم متاجر الإعداد للمنطق المعقد مع القابل للتأليف والمراقبين وأنماط TypeScript المتقدمة
- أعد جميع خصائص الحالة من متاجر الإعداد لضمان تتبع Pinia للتفاعلية بشكل صحيح
- استخدم storeToRefs() عند تفكيك الحالة أو المُحصِّلات للحفاظ على التفاعلية
避免
- تفكيك الحالة مباشرة بدون storeToRefs (يكسر التفاعلية)
- استدعاء المتاجر في نطاق الوحدة بدلاً من داخل الدوال (يسبب مشاكل SSR)
- تخزين المكونات أو الكائنات غير القابلة للتسلسل في الحالة (يمنع الترطيب)