MVVM — Model View ViewModel
The State Synchronisation Problem
Table of Contents
The Three Roles
┌───────────────────────────────────────────────────────────┐
│ View │
│ - Renders bound ViewModel state │
│ - Triggers ViewModel actions on user events │
│ - No business logic, no direct model access │
└───────────────────────────┬───────────────────────────────┘
binds to / calls │ observable state
▼
┌───────────────────────────────────────────────────────────┐
│ ViewModel │
│ - Observable state (reactive properties) │
│ - Exposes commands (actions/methods for the view) │
│ - Transforms model data for display │
│ - Orchestrates async operations │
└───────────────────────────┬───────────────────────────────┘
reads / updates │
▼
┌───────────────────────────────────────────────────────────┐
│ Model │
│ - Data, domain rules, persistence, API services │
│ - No knowledge of ViewModel or View │
└───────────────────────────────────────────────────────────┘Data Binding: The Core Idea
TypeScript + React Example: Order Dashboard ViewModel
Async Operations in the ViewModel
ViewModel Testing
MVVM vs MVP vs MVC
Concern
MVC
MVP
MVVM
When to Use MVVM
Lessons Learned
Last updated