diff --git a/src/renderers/dom/fiber/ReactDOMFiber.js b/src/renderers/dom/fiber/ReactDOMFiber.js index 9736c6febc010..e4ce77f17e8e4 100644 --- a/src/renderers/dom/fiber/ReactDOMFiber.js +++ b/src/renderers/dom/fiber/ReactDOMFiber.js @@ -120,11 +120,13 @@ var ReactDOM = { render(element : ReactElement, container : DOMContainerElement) { warnAboutUnstableUse(); + let root; if (!container._reactRootContainer) { - container._reactRootContainer = DOMRenderer.mountContainer(element, container); + root = container._reactRootContainer = DOMRenderer.mountContainer(element, container); } else { - DOMRenderer.updateContainer(element, container._reactRootContainer); + DOMRenderer.updateContainer(element, root = container._reactRootContainer); } + return DOMRenderer.getPublicRootInstance(root); }, unmountComponentAtNode(container : DOMContainerElement) { diff --git a/src/renderers/shared/fiber/ReactFiberReconciler.js b/src/renderers/shared/fiber/ReactFiberReconciler.js index 82a6175fd0c63..483f559027515 100644 --- a/src/renderers/shared/fiber/ReactFiberReconciler.js +++ b/src/renderers/shared/fiber/ReactFiberReconciler.js @@ -54,17 +54,17 @@ export type HostConfig = { type OpaqueNode = Fiber; -export type Reconciler = { +export type Reconciler = { mountContainer(element : ReactElement, containerInfo : C) : OpaqueNode, updateContainer(element : ReactElement, container : OpaqueNode) : void, unmountContainer(container : OpaqueNode) : void, performWithPriority(priorityLevel : PriorityLevel, fn : Function) : void, // Used to extract the return value from the initial render. Legacy API. - getPublicRootInstance(container : OpaqueNode) : (C | null), + getPublicRootInstance(container : OpaqueNode) : (ReactComponent | I | null), }; -module.exports = function(config : HostConfig) : Reconciler { +module.exports = function(config : HostConfig) : Reconciler { var { scheduleWork, performWithPriority } = ReactFiberScheduler(config); @@ -106,8 +106,13 @@ module.exports = function(config : HostConfig) : performWithPriority, - getPublicRootInstance(container : OpaqueNode) : (C | null) { - return null; + getPublicRootInstance(container : OpaqueNode) : (ReactComponent | I | null) { + const root : FiberRoot = (container.stateNode : any); + const containerFiber = root.current; + if (!containerFiber.child) { + return null; + } + return containerFiber.child.stateNode; }, };