技能 pinia
📦

pinia

安全

تعريف متاجر Vue باستخدام Pinia

يتطلب بناء تطبيقات Vue إدارة حالة قابلة للتنبؤ عبر المكونات. توفر Pinia واجهة برمجة تطبيقات آمنة من حيث النوع وبديهية لتعريف المتاجر مع الحالة والمُحصِّلات والإجراءات. توفر هذه المهارة مراجع شاملة لبناء أنماط قابلة للتوسع لإدارة حالة Vue.

支援: Claude Codex Code(CC)
🥉 72 青銅
1

下載技能 ZIP

2

在 Claude 中上傳

前往 設定 → 功能 → 技能 → 上傳技能

3

開啟並開始使用

測試它

正在使用「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)
  • })
  • ```

安全審計

安全
v1 • 1/30/2026

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.

11
已掃描檔案
1,543
分析行數
0
發現項
1
審計總數
未發現安全問題
審計者: claude

品質評分

45
架構
100
可維護性
87
內容
23
社群
100
安全
91
規範符合性

你能建構什麼

بناء متاجر المصادقة للمستخدمين

إنشاء متاجر Pinia لإدارة جلسات المستخدم وحالة المصادقة والصلاحيات عبر تطبيقات Vue.

تنفيذ تدفقات السلة والدفع

تصميم متاجر للوظائف التجارية الإلكترونية بما في ذلك حالة سلة التسوق وكتالوجات المنتجات ومعالجة الطلبات.

إنشاء مكتبات حالة UI المشتركة

تطوير إضافات Pinia قابلة لإعادة الاستخدام ومتاجر قابلة للتأليف لإدارة السمات ومربعات الحوار المشعة وأنظمة الإشعارات.

試試這些提示

إنشاء متجر أساسي
كيف أحدد متجر Pinia لإدارة تفضيلات المستخدم مثل إعدادات السمة واللغة؟ اعرض كلاً من صيغتي Options API و Composition API.
المُحصِّلات والحالة المحسوبة
إنشاء متجر Pinia لسلة تسوق يستخدم المُحصِّلات لحساب المجموع الفرعي والضريبة والإجمالي. اعرض كيفية الوصول إلى هذه القيم المحسوبة في المكونات.
إجراءات المتجر مع TypeScript
كتابة متجر Pinia لمعالجة استدعاءات 비동ائي API مع كتابة TypeScript الصحيحة للإجراءات والحمولة وقيم الإرجاع.Include أنماط معالجة الأخطاء.
التواصل عبر المتاجر
كيف يمكنني تأليف عدة متاجر Pinia معًا؟ اعرض نمط حيث يوفر متجر المصادقة بيانات المستخدم التي يستخدمها متجر السلة للتخصيص.

最佳實務

  • استخدم متاجر الإعداد للمنطق المعقد مع القابل للتأليف والمراقبين وأنماط TypeScript المتقدمة
  • أعد جميع خصائص الحالة من متاجر الإعداد لضمان تتبع Pinia للتفاعلية بشكل صحيح
  • استخدم storeToRefs() عند تفكيك الحالة أو المُحصِّلات للحفاظ على التفاعلية

避免

  • تفكيك الحالة مباشرة بدون storeToRefs (يكسر التفاعلية)
  • استدعاء المتاجر في نطاق الوحدة بدلاً من داخل الدوال (يسبب مشاكل SSR)
  • تخزين المكونات أو الكائنات غير القابلة للتسلسل في الحالة (يمنع الترطيب)

常見問題

ما هو Pinia ولماذا يجب أن أستخدمه؟
Pinia هي مكتبة إدارة الحالة الرسمية لـ Vue.js. توفر واجهة برمجة تطبيقات أبسط وأكثر أمانًا من حيث النوع مقارنة بـ Vuex مع دعم أفضل لـ TypeScript وحجم حزمة أصغر ونهج أكثر حداثة قائمًا على التأليف.
كيف يختلف Pinia عن Vuex؟
يلغي Pinia الطفرات (تعديل الإجراءات للحالة مباشرة)، ويستخدم واجهة برمجة تطبيقات أبسط، ويوفر استدلال TypeScript أفضل، وليس لديه وحدات مطلوبة، ويدعم Vue DevTools 6+ مع نظام إضافات أكثر حداثة.
هل يمكنني استخدام Pinia مع Options API و Composition API؟
نعم، يدعم Pinia كلتا الطريقتين. تشبه متاجر Options المتجر مع كائنات الحالة والمُحصِّلات والإجراءات. تستخدم متاجر الإعداد صيغة دالة التأليف التي تعيد الحالة التفاعلية والأساليب.
كيف أختبر متاجر Pinia؟
استخدم حزمة @pinia/testing مع createPinia(). توفر هذا متاجر وهمية لاختبارات الوحدة التي تعمل مع Vue Test Utils. يمكنك تصغير الإجراءات وتعيين الحالة الأولية والتأكيد على سلوك المتجر.
هل يعمل Pinia مع العرض من جانب الخادم؟
نعم، يتضمن Pinia دعم SSR مدمج. استخدم pinia.state.value لتسلسل الحالة للترطيب وإلغاء تسلسلها على العميل. لدى Nuxt تكامل من الدرجة الأولى مع الاستيرادات التلقائية.
كيف أواصل حالة Pinia عبر إعادة تحميل الصفحة؟
إنشاء إضافة Pinia تراقب تغييرات الحالة وتكتب إلى localStorage أو ملف تعريف ارتباط. عند التهيئة، اقرأ من التخزين وترطيب الحالة. تقوم إضافات المجتمع الشائعة مثل pinia-plugin-persistedstate بأتمتة هذا النمط.