The vast majority of traditional UI apps use the MVC pattern to organize state management. But in real-time client-side apps, this also quickly becomes a pain because models need to be synchronized, state is scattered, and there is no single source of truth. Different models can influence other models and the situation quickly gets out of hand. Another issue is bidirectional data flow between view and model (through the controller), where the view calls some controller method, which in turn calls a model method, which causes other models to update, then the updated state is passed back to the view.
In order to overcome this, the FLUX ideology was created. In this ideology, the direction of data/event propagation is constant; View does not communicate back and forth with the model. Instead, view issues Action and Dispatcher pick up those actions to update...