Change how we add subscription to state changes when using useValue/useValueSelector. Before the subscription was activated immediately, but it created a problem that you could create a component, not mount it, and the value would still update the node inside (although only if it was not top-level).
It also would never unsubscribe, because there was no unmount event. This PR adds a subscription only when we actually mount the component, and update the value if it is different.
This is a part of https://github.com/Bloomca/veles/issues/45, but it doesn't close it fully, because useValueIterator and trackValue have the same issue, I'll address them separately (the PR is already quite big).
Description
Change how we add subscription to state changes when using
useValue
/useValueSelector
. Before the subscription was activated immediately, but it created a problem that you could create a component, not mount it, and the value would still update the node inside (although only if it was not top-level).It also would never unsubscribe, because there was no
unmount
event. This PR adds a subscription only when we actually mount the component, and update the value if it is different.This is a part of https://github.com/Bloomca/veles/issues/45, but it doesn't close it fully, because
useValueIterator
andtrackValue
have the same issue, I'll address them separately (the PR is already quite big).