0Pricing
Swift Academy · Lección

Fuente única de la verdad y flujo unidireccional

Diseñe apps de SwiftUI con un único modelo de estado autoritativo.

Fuente única de la verdad y flujo unidireccional es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

Bienvenido

El flujo de datos unidireccional significa que el estado fluye hacia abajo por el árbol de vistas y los eventos fluyen hacia arriba. Una única fuente de verdad autorizada elimina las inconsistencias.

El principio

``` State → View → Event → State mutation → View re-renders ``` Las vistas son funciones puras del estado. No deciden cuál es el estado; solo lo muestran y emiten eventos.

Interfaz de usuario basada en el modelo

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

Cómo evitar el estado duplicado

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

Patrón de acciones/eventos

```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 (de código abierto) formaliza este patrón en Swift mediante reducers, efectos y stores, de forma similar a Redux en React.

Cómo evitar conflictos bidireccionales

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

Propagación de cambios hacia arriba

Utilice cierres (callbacks) para propagar eventos hacia arriba: ```swift struct Child: View { var onDelete: () -> Void var body: some View { Button("Delete", action: onDelete) } } ```

Pruebas del código unidireccional

El estado puro y el reducer puro se pueden probar de forma trivial: ```swift var state = AppState() reduce(state: &state, action: .increment) XCTAssertEqual(state.count, 1) ```

Ventajas

• Predecible: el mismo estado → la misma interfaz de usuario • Fácil de depurar: registre cada acción y cambio de estado • Fácil de probar: no se necesita la interfaz de usuario para probar la lógica • Depuración con viaje en el tiempo: reproduzca el historial del estado

Comprobación rápida

En un flujo de datos unidireccional, ¿qué desencadena una mutación del estado?

Resumen

Puntos clave: • El estado fluye hacia abajo; los eventos fluyen hacia arriba • Una única fuente de verdad: no hay estado duplicado • Utilice acciones y reducers para una lógica de mutación fácil de probar • Los callbacks propagan eventos del hijo al padre • Estado puro + reducer puro = pruebas unitarias sencillas ¡Curso completado! Siguiente: Combine Framework.

Preguntas frecuentes

¿La lección «Fuente única de la verdad y flujo unidireccional» es gratis?

Sí — el texto completo de «Fuente única de la verdad y flujo unidireccional» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Fuente única de la verdad y flujo unidireccional»?

Diseñe apps de SwiftUI con un único modelo de estado autoritativo. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Fuente única de la verdad y flujo unidireccional»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. @Binding: flujo de datos bidireccional
  2. @ObservableObject y @StateObject
  3. @EnvironmentObject para el estado compartido
  4. Fuente única de la verdad y flujo unidireccional
← Volver a Swift Academy