Если вы погрузитесь глубже в mobx
, вы попадете по следующей ссылке Наблюдатель , где вы можете найти следующий комментарий
/**
* A node in the state dependency root that observes other nodes, and can be observed itself.
*
* ComputedValue will remember the result of the computation for the duration of the batch, or
* while being observed.
*
* During this time it will recompute only when one of its direct dependencies changed,
* but only when it is being accessed with `ComputedValue.get()`.
*
* Implementation description:
* 1. First time it's being accessed it will compute and remember result
* give back remembered result until 2. happens
* 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.
* 3. When it's being accessed, recompute if any shallow dependency changed.
* if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.
* go to step 2. either way
*
* If at any point it's outside batch and it isn't observed: reset everything and go to 1.
*/
Который в значительной степени утверждает, что новое значение будет вычисляться (т. е. новая вещь поступит через подписку) только при первом обращении к значению (т. е. при подписке) или при изменении зависимостей (т. е. при изменении сохраненных ссылок, в вашем случае с помощью * Оператор 1007 * внутри магазина).
Так что, если мне нужно сделать сводку, которая именно так и работает, поведение очень похоже на другие библиотеки управления состоянием, которые передают новые значения только своим подписчикам когда некоторые ссылки внутри магазина меняются.
** Отказ от ответственности, а не mobx pro, но это то, что говорит исходный код.