Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Summary: *This is a follow-up to D66176001* ## Recap Signals constructs an isolated dependency graph for each mount item/render tree node in the mount phase due to the linear fashion in which mount works. This also means that there is no signal dependency between a render tree node and its children and that invalidations of descendant render tree nodes do not cause ancestors to remount. A major implication of this is that certain extensions such as the mount and render lifecycle extensions do not refire for ancestors of invalidated nodes. This is quite different from what happens in the non-signals infra, in that, the reduced `BloksModel` hierarchy implicitly propagates dirtiness to the mount phase (via changed render units) such that ancestor nodes of an invalidated descendant re-mount. The change in behavior from signals is much preferrable but it breaks expectations of products built in Bloks today. So we must align the signals mount behavior with that of the current infra within reason ## This Diff Changes mount to happen in a recursive fashion such that dirtiness/invalidation can be propagated to an ancestor of an invalidated node. A dirty ancestor will go through the update phase just like in today's mount. However, the ancestor will still have the ability to skip its binders due to dependency tracking information and fine grained invalidation that signals provides. NOTE: This change **still** maintains the isolated dependency graph behavior of each mount item as mount is not nested. So we still get the benefits of dirty checking shallow dependency graphs Reviewed By: adityasharat Differential Revision: D66541799 fbshipit-source-id: d530805a21f6507716e0f5a6e1c772714644c2f3
- Loading branch information