That seems nice. I don't like the `$` and the names of methods, but the idea is quite good. It's like MobX, but with the potential of being better, because of the simpler and clearer interface. MobX is a mess.
Does the component get updated on every state change anywhere, or just when some property that it explicity uses gets updated? This is important.