Event-driven Projection
This content is not available in your language yet.
Statt Zustand direkt zu mutieren, beschreiben Events, was passiert ist. Der Zustand ist das Ergebnis der Projektion dieser Events.
Das Grundprinzip
Abschnitt betitelt „Das Grundprinzip“User-Intent → Command → Event → Projection → State → ViewModel → Komponente- Nutzer klickt „Task abschließen”
CompleteTaskCommandwird dispatchtTaskCompleted-Event wird emittiert- Store projiziert den neuen Zustand: Task mit
status: 'done' - Komponente rendert den aktualisierten Zustand
Warum das wichtig ist
Abschnitt betitelt „Warum das wichtig ist“- Rückverfolgbarkeit: Was hat sich wann geändert und warum?
- Optimistic Updates: Zustand sofort aktualisieren, Event async bestätigen
- Wiederholbarkeit: Events können replayed werden (Debugging, Tests)
- Entkopplung: Producer des Events kennt die Consumer nicht
Im Frontend-Kontext
Abschnitt betitelt „Im Frontend-Kontext“In einem Signal-Store-Setup ohne vollständiges Event-Sourcing kann dieses Pattern vereinfacht umgesetzt werden:
// Statt: patchState(store, { tasks: [...tasks, newTask] })// Mit semantischer Intent-Trennung:withMethods((store) => ({ taskCreated(task: Task) { patchState(store, { tasks: [...store.tasks(), task] }); }, taskCompleted(taskId: string) { patchState(store, { tasks: store.tasks().map((t) => (t.id === taskId ? { ...t, status: 'done' } : t)), }); },}));Kleine Projektion statt direkter Mutation. Klare semantische Bezeichnungen.