محتويات الدورة

Vue / المتوسط: حالة الميزة وملكية الأثر / الدرس 9

الحالة المشتركة وPinia وحدود الملكية

اختر المحلي والمشترك بحسب العمر والمستهلك ثم اكشف مخزناً دون فقد التفاعلية أو خلط طلبات الخادم.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • قرر أي حالة تحتاج مالكاً مشتركاً.
  • استخدم حالة Pinia ومشتقاته وأفعاله وstoreToRefs بقصد.

ارفع الحالة عندما يتطلب العقد فقط

لا ينتمي كل حقل للمخزن العام. تبقى مسودة وحيدة محلية وقد يحتاج سياق الحساب أو المجموعة مالكاً أوسع. حدد القارئ والمعدل والعمر؛ لا يجعل المخزن البيانات دائمة أو خاصة أو متزامنة أو صالحة تلقائياً. ميّز المؤكد واختيار الواجهة وحالة الطلب. تكفي الخصائص والأحداث للصغير ويسهل الحد الصحيح شرح الملكية والتصفير عند الخروج أو نهاية المهمة.

اكشف الحالة والعمليات بمخزن صغير

يستخدم نمط setup في Pinia مراجع Vue ومحسوباته ودواله المعادة من defineStore. تعتمد الواجهة الموثقة المتوافقة مع Vue 3 ويثبت المشروع إصداراً مناسباً. اجعل المعرف فريداً؛ تجمع الأفعال القواعد ولا يمنع Pinia كل تعديل مباشر فتهم الأعراف والاختبارات. يختار المثال معرّفاً موجوداً ويعيد الحالة والمشتق بلا تخزين أو عميل شبكة.

javascript مخزن Pinia setup بعملية اختيار صريحة
import { ref, computed } from "vue"
import { defineStore } from "pinia"

export const useNotesStore = defineStore("notes", () => {
  const notes = ref([{ id: "n1", title: "Reactivity" }])
  const selectedId = ref(null)
  const selected = computed(() => notes.value.find(note => note.id === selectedId.value) ?? null)
  function selectNote(id) {
    if (!notes.value.some(note => note.id === id)) return false
    selectedId.value = id
    return true
  }
  return { notes, selectedId, selected, selectNote }
})

يتطلب الحزم ونسخة Pinia مثبتة بالتطبيق. تبدأ selected فارغة وتعيد العملية true للموجود. لم ينفذ الجزء مقابل Pinia.

احفظ وصول الحالة عند التفكيك

المخزن تفاعلي وقد يفصل تفكيك البدائي روابطه. تستخرج storeToRefs الحالة والمشتقات كمراجع وتستثني الدوال وغير التفاعلي. تستخرج الأفعال وفق الواجهة دون التحويل نفسه. يحفظ المثال الحالة في setup؛ لا تطبق تحويل defineProps على المخزن فهما مختلفان. احتفظ بالمخزن إن أوضح ولا تصنع نسخة شبيهة للراحة.

javascript مراجع حالة وفعل مستخرج داخل setup
import { storeToRefs } from "pinia"
import { useNotesStore } from "./stores/notes.js"

const store = useNotesStore()
const { notes, selected } = storeToRefs(store)
const { selectNote } = store
selectNote("n1")

يستخدم بسياق Pinia نشط مثبت، عادة setup متزامن. يحتفظ notes وselected بوصول المرجع في JavaScript. لا ينشئ الجزء السياق أو يدعي اختبار تشغيل المخزن.

عامل الدوام والحقيقة البعيدة كنظامين منفصلين

قد يخزن المخزن العرض الحالي وتبقى الخلفية أو القاعدة المعتمدة الأصل. قرر التحميل والقدم والتفاؤل والفشل وتغير الحساب. ليس تخزين المتصفح آمناً تلقائياً فلا تحفظ سراً لسهولة الملحق. رقم وتحقق من المستعاد وصفّر نطاق الحساب بعمره وامنع نتيجة مستخدم آخر. لا يثبت الإسناد قبول الخادم.

أنشئ مالكين آمنين للطلب في SSR

قد تسرب الوحدة المشتركة القابلة للتعديل بين طلبات المستخدمين. يحتاج SSR تطبيقاً ومخزناً جديدين لكل طلب وتسلسلاً واستيعاباً مضبوطين. لا تعمم مثال العميل لمخزن الخادم العام. يدعم Pinia أنماطاً وتختلف التفاصيل بالإطار والمُسلسل. اختبر سياقات اصطناعية مستقلة ولا تضمّن الخاص في HTML أو السجل. صرّح بالملكية والنقل والهوية كي لا تنتج الراحة مشكلة بين المستخدمين.

الأخطاء الشائعة وإصلاحها

تتوقف قيمة مخزن مفككة عن التحديث

لماذا يحدث؟
نسخ التفكيك العادي البدائي.
كيف تصلحه؟
استخدم storeToRefs أو وصول الخاصية.
كيف تتجنب تكراره؟
ميّز مراجع الحالة والأفعال.

يسرب مخزن عام بين طلبات الخادم

لماذا يحدث؟
أعيدت حالة وحدة بين المستخدمين.
كيف تصلحه؟
أنشئ تطبيقاً وسياقاً جديدين للطلب.
كيف تتجنب تكراره؟
اختبر عزل الطلبات صراحة.

يعلن تحديث مخزن محلي كسجل محفوظ

لماذا يحدث؟
اختلط المحلي بالقبول الدائم.
كيف تصلحه؟
نمذج الانتظار والتأكيد منفصلين.
كيف تتجنب تكراره؟
حدد مصدر البيانات المعتمد.

اختبر فهمك

1. أيهما للمشترك: مسودة حوار واحد أم سياق حساب لمسارات كثيرة؟

اعرض الحل المشروح

يحتاج الحساب غالباً مالكاً مشتركاً وتصفيراً، وتبقى المسودة محلية ما لم يبرر العمر والمستهلك. يتبع الموضع العقد لا تعميم كل ref.

2. يستعيد ملحق دوام اختيار حساب سابق. ماذا يفحص؟

اعرض الحل المشروح

تحقق من الحساب والمخطط والإذن ووجود السجل وارفض القديم وغير المصرح وصفّر بقصد؛ لا تثبت سهولة التسلسل العزل.

أهم ما تعلمته

  • يتبع نطاق الحالة الملكية والمستهلك والعمر.
  • تحفظ storeToRefs الواجهة التفاعلية.
  • يحتاج الدوام وعزل SSR تصميماً مستقلاً.

المراجع الرسمية