2.5.17
https://codesandbox.io/s/4k43rylw0
قم بتحميل الناسخ وأخذ لقطة لكومة الذاكرة. عند البحث في الكومة ، ستجد 4 VueComponents (تطبيق ، حاوية ، طفل ، Async Child)
انقر فوق الزر إتلاف. يؤدي هذا إلى تبديل v-if الذي سيزيل المكون الفرعي وبالتالي مكون AsyncChild أيضًا.
بعد إتلاف المكون التابع ، يجب إتلاف المكون والمكون الفرعي الذي تم تحميله بشكل غير متزامن وتحرير الذاكرة.
يحتفظ Vue بمرجع السياق الذي يمنع هذه المكونات من جمع القمامة
يحدث هذا بسبب منطق حل عدم التزامن الموجود هنا: https://github.com/vuejs/vue/blob/52719ccab8fccffbdf497b96d3731dc86f04c1ce/src/core/vdom/helpers/resolve-async-component.js#L57 -L68
في وظيفة forceRender في السطر 64 ، بعد استدعاء $ forceUpdate ، يجب مسح مصفوفة السياقات لتحرير تلك المراجع بحيث يمكن تجميع المكونات غير المرغوب فيها في وقت لاحق
يمكنني إرسال بيان عام لإصلاح هذه المشكلة أيضًا ، شكرًا
تم تقديم العلاقات العامة هنا: https://github.com/vuejs/vue/pull/8755
مرحبًا LinusBorg
أرى أنك أضفت بعض التصنيفات لهذه المشكلة. هل هناك أي شيء آخر يتعين علي القيام به لبدء عملية مراجعة طلب السحب المشار إليه؟
شكر!
التعليق الأكثر فائدة
يمكنني إرسال بيان عام لإصلاح هذه المشكلة أيضًا ، شكرًا