The case for action based change detection
There are several approaches to detecting change, for example:
Mobx, Vue js, Overmind JS: Mutation detection using getters/setters or proxies.
Redux: Reference comparison, typically combined with immutability (Is previous value different than current?)
Cerebral JS: Path matching. With single state trees you can match what paths components depend on with what paths are being mutated in the state tree