function describeID(id: DebugID): string { const name = ReactComponentTreeHook.getDisplayName(id); const element = ReactComponentTreeHook.getElement(id); const ownerID = ReactComponentTreeHook.getOwnerID(id); let ownerName; if (ownerID) { ownerName = ReactComponentTreeHook.getDisplayName(ownerID); } warning( element, 'ReactComponentTreeHook: Missing React element for debugID %s when ' + 'building stack', id ); return describeComponentFrame(name || '', element && element._source, ownerName || ''); }
unmountedIDs.length = 0; }, isMounted(id: DebugID): boolean { var item = getItem(id); return item ? item.isMounted : false; }, getCurrentStackAddendum(topElement: ?ReactElement): string { var info = ''; if (topElement) { var name = getDisplayName(topElement); var owner = topElement._owner; info += describeComponentFrame( name, topElement._source, owner && getComponentName(owner) ); } var currentOwner = ReactCurrentOwner.current; if (currentOwner) { if (typeof currentOwner.tag === 'number') { const workInProgress = ((currentOwner : any) : Fiber); // Safe because if current owner exists, we are reconciling, // and it is guaranteed to be the work-in-progress version. info += getStackAddendumByWorkInProgressFiber(workInProgress); } else if (typeof currentOwner._debugID === 'number') { info += ReactComponentTreeHook.getStackAddendumByID(currentOwner._debugID); } }