الآخر

Cheat Sheet: FSD

layers · public API · same layer · query key · entities
🎯 الهدف: تفتكر اتجاه الاعتماد، وواجهة الـ Slice، ومكان داتا السلة.
الاتجاهالطبقة الأعلى تعتمد على الأدنى. العكس ممنوع
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 في مكان مناسب.