A layered architecture
Like any good system, MobX is built up of layers where each layer provides the services and behaviors for the higher layers. If you apply this lens on MobX, you can see these layers, bottom-up:
- Atoms: Atoms are the foundation of MobX observables. As the name suggests, they are the atomic pieces of the observable dependency tree. It keeps track of its observers but does not actually store any value.
- ObservableValue, ComputedValue, and Derivations:
ObservableValue
extendsAtom
and provides the actual storage. It is also the core implementation of boxed Observables. In parallel, we have derivations and reactions, which are the observers of the atoms. They respond to changes in atoms and schedule reactions.ComputedValue
builds upon the derivations and also acts as an observable. - Observable{Object, Array, Map} and APIs: These data structures build on top of
ObservableValue
and use it to represent their properties and values. This also acts as the API layer of MobX, the primary...