See facebook/react@master...mridgway:reconcilerRecursion for progress.
This PR involves removing ReactReconciler
calls and still maintain event queue orders for React*Component
. From my analysis these are the spots that need to be addressed:
ReactCompositeComponent
mountComponent
Mount queue: componentDidMount (post-recursion)
receiveComponent
Mount queue: componentDidUpdate (post-recursion)
unmountComponent
ReactDOMComponent
mountComponent
Mount queue: trapBubbledEventsLocal (pre-recursion), putListener (pre-recursion), focusDOMComponent (post-recursion)
receiveComponent
Mount queue: putListener (pre-recursion), postUpdateSelectWrapper (post-recursion)
unmountComponent
ReactReconciler
Also, ReactDOMComponent
uses DomLazyTree
objects that the reconciler would need to recognize. In order to keep ReactReconciler
decoupled, there will need to be a generic interface for trees and a plugin for handling DomLazyTree
specifically.
mountComponent
receiveComponent
unmountComponent
Testing