Svelte / دليل حلول تحريري
تشخيص القيم التفاعلية القديمة والخصائص والملكية
حدد علاقة القيمة الحالية المفقودة قبل إضافة Effects أوجعل كل خاصية قابلة للربط.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
قد يستبدل الأب البيانات ويبقى عنوان قديم بالابن، أو يحدث مجموع عبر زر واحد فقط، أو يظهر تحذير ملكية بعد تغيير كائن وارد. تنشأ الأعراض من عقود مختلفة. احفظ نمط المكون الدقيق وقيمة المصدر والعملية التي يبدأ عندها اختلاف النتيجة عن المتوقع.
افهم الأسباب المحتملة
- تشمل الأسباب لقطة عادية من حالة تفاعلية، وتهيئة مرة من data معاد استخدامها، وتكرار المشتق، وقراءة async غير متتبعة، ومرجعاً متداخلاً مشتركاً، أو تغييراً خارج المالك. يدير المترجم تفكيك $props الخاص؛ فلا تخلطه بتفكيك JavaScript العادي أو نسخ الخاصية إلى حالة محلية مستقلة.
اتبع المصدر والاشتقاق وقراءة المستهلك
استخدم طريق مكون اصطناعياً وسجل الإصدار ونمط runes أوالقديم. حدد المالك وهل تغير العملية حقلاً متداخلاً أوتستبدل المدخل، وأين يقرأه المستهلك. قد تخفي نسخة بدائية في صفحة معاد استخدامها تحديث مصدر صحيحاً. لا تبدأ بتحديث إجباري عام. أبعد الخاص عن السجل واحفظ معرفاً وقيمة متوقعة أدنى. قد يكون أول اختلاف استدعاء مساعد تلقى قيمة مرة بدلاً من getter للقراءات الحالية، وليس عيباً في تحديث DOM أو في المترجم نفسه.
ميز خصائص يديرها المترجم من اللقطات العادية
افحص سياق ترجمة $state و$derived؛ ليس ملف عادي بدالة مشابهة اختبار rune. لإعلان $props سلوك مترجم، بينما قد تلتقط نسخة لاحقة أوتفكيك عادي حقول الكائن الحالية. يحسب المشتق دون أثر وقد تنحرف Effect تنسخ مجموعاً أوتدور، ولا تقدم بيانات SSR الأساسية. شخص القراءة لا شعار أن كل تفكيك يكسر التفاعل أوكل قديم يحتاج Effect. يهم هذا التمييز حتى لا تستبدل صياغة $props صحيحة بردود نداء أوحالة إضافية تعقد الملكية دون معالجة السبب الحقيقي.
أظهر الفرق بين اللقطة والقراءة الحالية محلياً
يلتقط المثال قيمة بدائية وينشئ getter للكائن العادي نفسه. بعد التغيير تبقى اللقطة قديمة وتقرأ الدالة الجديدة. يختبر مراجع JavaScript لا وكيلاً أومتتبع Svelte، ويساعد على وصف واجهة المستهلك. يختبر المكون الحقيقي التغيير المتداخل واستبدال الأب وموضع القراءة المترجم. لا تعد غلافاً خارجياً جديداً عزلاً للداخل المتغير؛ سم الثابت وحالة عملية واحدة أوشجرة مكونات. يظل ذلك مطلب ملكية منفصلاً عن إمكان متابعة القيمة الجديدة داخل getter.
const source={total:1};
const snapshot=source.total;const current=()=>source.total;
source.total=2;
console.assert(snapshot===1 && current()===2);
تختلف اللقطة وgetter بعد التغيير دون rune أووكيل أوتحديث مكون.
أصلح الملكية واختبر التفاعل المترجم
احفظ مالكاً واحداً ومرر قصداً ضيقاً عند طلب تغيير. استخدم $bindable للربط المعلن لا لإخفاء كل تحذير. سو الخادم والرفض مستقليْن عن التفاعل، واختبر الاستبدال والترتيب والتحرير والتنظيف بعينات حتمية في متصفح مأذون. ينفذ الدليل اللقطة فقط ولا يترجم أوينتج تحذيراً. احفظ القيد وافحص النمط وDOM والبيانات الحالية، ولا تسم تأكيد getter إصلاحاً تفاعلياً كاملاً. ينبغي أن يظهر في تقرير الدمج أي عملية مستخدم أعادت إنتاج العيب وأي تغيير منع رجوعه دون توسيع حقوق تعديل الطفل على بيانات الأب.
تحقق من نجاح الإصلاح
تحقق من المصدر نفسه بكل طريق تحديث بما فيه الاستبدال وتفاعل الابن. أكد الخرج الحالي وحفظ المسودة المقصودة وعدم تغيير الأب عرضياً. افصل نتائج الدالة عن المترجم والمتصفح.
امنع تكرار المشكلة
- وثق المالك وعقد الخاصية ورد النداء والربط وقراءة الحالي. فضل المشتق والسياق المحدود على المكرر أوالعام الخاص، واحفظ عينات إعادة الصفحة والمرجع المتداخل وافحص التحذير بإصداره لا إسكاتاً عاماً.