0Pricing
Swift Academy · Lekcja

Pojedyncze źródło prawdy i jednokierunkowy przepływ

Projektowanie aplikacji SwiftUI z jednym nadrzędnym modelem stanu.

Pojedyncze źródło prawdy i jednokierunkowy przepływ to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Witamy

Jednokierunkowy przepływ danych oznacza, że stan przepływa w dół drzewa widoków, a zdarzenia przepływają w górę. Jedno autorytatywne źródło prawdy eliminuje niespójności.

Zasada

``` State → View → Event → State mutation → View re-renders ``` Widoki są czystymi funkcjami stanu. Nie decydują o tym, jaki jest stan — jedynie go wyświetlają i emitują zdarzenia.

Interfejs oparty na modelu

```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 }) } } ```

Unikanie duplikowania stanu

```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 ```

Wzorzec akcji/zdarzeń

```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 (open source) formalizuje ten wzorzec w języku Swift za pomocą reduktorów, efektów i magazynów — podobnie jak Redux w React.

Unikanie konfliktów dwukierunkowych

```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) } } ```

Przekazywanie zmian w górę

Proszę używać domknięć (callbacków), aby przekazywać zdarzenia w górę: ```swift struct Child: View { var onDelete: () -> Void var body: some View { Button("Delete", action: onDelete) } } ```

Testowanie kodu jednokierunkowego

Czysty stan i czysty reduktor można bez trudu testować: ```swift var state = AppState() reduce(state: &state, action: .increment) XCTAssertEqual(state.count, 1) ```

Korzyści

• Przewidywalność: ten sam stan → ten sam interfejs • Łatwość debugowania: rejestrowanie każdej akcji i zmiany stanu • Łatwość testowania: testy logiki nie wymagają interfejsu użytkownika • Debugowanie z podróżą w czasie: odtwarzanie historii stanu

Szybkie sprawdzenie

Co wywołuje modyfikację stanu w jednokierunkowym przepływie danych?

Podsumowanie

Najważniejsze informacje: • Stan przepływa w dół, a zdarzenia w górę • Jedno źródło prawdy — bez duplikowania stanu • Proszę używać akcji i reduktorów, aby logika modyfikacji była łatwa do testowania • Callbacki przekazują zdarzenia z komponentu potomnego do nadrzędnego • Czysty stan + reduktor = łatwe testy jednostkowe Kurs ukończony! Dalej: Combine Framework.

Często zadawane pytania

Czy lekcja „Pojedyncze źródło prawdy i jednokierunkowy przepływ” jest bezpłatna?

Tak — pełny tekst „Pojedyncze źródło prawdy i jednokierunkowy przepływ” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Pojedyncze źródło prawdy i jednokierunkowy przepływ”?

Projektowanie aplikacji SwiftUI z jednym nadrzędnym modelem stanu. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Pojedyncze źródło prawdy i jednokierunkowy przepływ”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. @Binding: dwukierunkowy przepływ danych
  2. @ObservableObject i @StateObject
  3. @EnvironmentObject dla współdzielonego stanu
  4. Pojedyncze źródło prawdy i jednokierunkowy przepływ
← Powrót do Swift Academy