Swift Academy · درس

المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه

صمّموا تطبيقات SwiftUI باستخدام نموذج حالة موثوق واحد.

الدرس 4 من 412 خطوة

المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه درس مجاني في Swift Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Swift Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Swift Academy 4 دروس في المجموع.

مرحبًا

يعني تدفق البيانات أحادي الاتجاه أن الحالة تتدفق إلى أسفل شجرة العرض، بينما تتدفق الأحداث إلى الأعلى. ويؤدي وجود مصدر حقيقة موثوق واحد إلى التخلص من حالات عدم الاتساق.

المبدأ

``` State → View → Event → State mutation → View re-renders ``` العروض دوال نقية تعتمد على الحالة. فهي لا تحدد ماهية الحالة، بل تعرضها فقط وتصدر الأحداث.

واجهة المستخدم المعتمدة على النموذج

```swift struct AppState { var count = 0; var filter: Filter = .all } struct AppView: View { @State var state = AppState() var body: some View { CounterView(state: state, onIncrement: { state.count += 1 }) } } ```

تجنب تكرار الحالة

```swift // ❌ Duplicate state — can drift out of sync: @State var isLoading = false @ObservedObject var viewModel: ViewModel // also has isLoading // ✓ Single source: @ObservedObject var viewModel: ViewModel // owns all state ```

نمط الإجراءات/الأحداث

```swift enum CounterAction { case increment, decrement, reset } func reduce(state: inout AppState, action: CounterAction) { switch action { case .increment: state.count += 1 case .decrement: state.count -= 1 case .reset: state.count = 0 } } ```

TCA (The Composable Architecture)

تعمل The Composable Architecture (وهي مفتوحة المصدر) على تنظيم هذا النمط في Swift باستخدام المخفِّضات والتأثيرات والمخازن، على نحو مشابه لـ Redux في React.

تجنب تعارضات الاتجاهين

```swift // ✓ Clear ownership: parent owns, child observes: struct Parent: View { @State private var text = "" var body: some View { Child(text: $text) } } struct Child: View { @Binding var text: String var body: some View { TextField("", text: $text) } } ```

تمرير التغييرات إلى الأعلى

استخدم الدوال المغلقة (عمليات الاستدعاء اللاحق) لتمرير الأحداث إلى الأعلى: ```swift struct Child: View { var onDelete: () -> Void var body: some View { Button("Delete", action: onDelete) } } ```

اختبار التعليمات البرمجية أحادية الاتجاه

تجعل الحالة النقية والمخفِّض النقي الاختبار أمرًا مباشرًا: ```swift var state = AppState() reduce(state: &state, action: .increment) XCTAssertEqual(state.count, 1) ```

الفوائد

• قابلة للتنبؤ: الحالة نفسها → واجهة المستخدم نفسها • سهلة التصحيح: سجّل كل إجراء وكل تغيير في الحالة • قابلة للاختبار: لا حاجة إلى واجهة المستخدم لاختبار المنطق • تصحيح الأخطاء عبر السفر عبر الزمن: أعد تشغيل سجل الحالة

تحقق سريع

في تدفق البيانات أحادي الاتجاه، ما الذي يؤدي إلى تغيير الحالة؟

مراجعة

أهم النقاط: • تتدفق الحالة إلى الأسفل، بينما تتدفق الأحداث إلى الأعلى • مصدر حقيقة واحد، من دون تكرار للحالة • استخدم الإجراءات والمخفِّضات لمنطق تغيير قابل للاختبار • تمرر عمليات الاستدعاء اللاحق الأحداث من الابن إلى الوالد • الحالة النقية + المخفِّض النقي = اختبارات وحدات سهلة اكتملت الدورة! التالي: Combine Framework.
البدء مجانًا

تعلم Swift مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
122
الدروس
409

الأسئلة الشائعة

هل درس «المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه» مجاني؟

نعم — نص درس «المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Swift Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Swift Academy 4 دروس في المجموع.

ماذا ستتعلم في «المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه»؟

صمّموا تطبيقات SwiftUI باستخدام نموذج حالة موثوق واحد. تتمرن على Swift Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Swift Academy؟

لا تُشترط خبرة سابقة. Swift Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Swift Academy هذا؟

نعم. كل درس في Swift Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏@Binding: تدفق البيانات ثنائي الاتجاه
  2. ‏@ObservableObject و@StateObject
  3. ‏@EnvironmentObject للحالة المشتركة
  4. المصدر الوحيد للحقيقة والتدفق أحادي الاتجاه
← العودة إلى Swift Academy