الاتجاهالطبقة الأعلى تعتمد على الأدنى. العكس ممنوع
featuresتستخدم
entities وshared. مش العكسنفس الطبقة
add-to-cart متستوردش من add-to-wishlistالداتاتطلع من الـ API عبر الـ Entity لحد الصفحة
الواجهةاستيراد من
index.ts بسالإضافة للسلةالفيتشر Mutation.
entities/cart تطلب الـ APIالتحديث
invalidateQueries على ['cart', 'current']تحديث فوري
onMutate يعمل setQueryData قبل رد السيرفرفشل الطلب
onError يرجّع previousCart، وبعدين onSettled يعمل invalidateالسعرالسعر المؤقت في الكاش مش موثوق. الباك يتحقق من السعر والمخزون
الهيدريقرأ
cartQueries.current، مش props من الفيتشرالصفحةتجمّع الزرار والاستعلام. متنفّذش منطقهم
منطق السلةفي
entities/cart، مش في shared لمجرد التكرارCheckoutFeature لو هو فعل المستخدم. Order هو الكيان
حالة السيرفرTanStack Query
حالة الواجهةمحلية. Zustand لو حالة عميل مشتركة السيرفر مش مالكها
خلّصت الموضوع لما
🧠 اختبر نفسك
١) entities تستورد زرار add-to-cart؟
لأ. الزرار في features، والكيان أدنى منها.
٢) شارة السلة وصفحة السلة يتكلموا مع بعض إزاي؟
نفس Query Key بتاع
cartQueries.current.٣) فيتشر محتاجة تنفّذ فيتشر تانية. الاعتماد المباشر؟
لأ. التجميع في Page أو Widget، أو Use Case في مكان مناسب.