InspectedElementContextController() — react Function Reference
Architecture documentation for the InspectedElementContextController() function in InspectedElementContext.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD ffe1f8a6_3dca_5623_85a1_2ed8a2343eb8["InspectedElementContextController()"] 73a58bda_a3e0_b7ab_6561_84167121e1ae["InspectedElementContext.js"] ffe1f8a6_3dca_5623_85a1_2ed8a2343eb8 -->|defined in| 73a58bda_a3e0_b7ab_6561_84167121e1ae style ffe1f8a6_3dca_5623_85a1_2ed8a2343eb8 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js lines 66–269
export function InspectedElementContextController({
children,
}: Props): React.Node {
const {inspectedElementID} = useContext(TreeStateContext);
const fetchFileWithCaching = useContext(FetchFileWithCachingContext);
const bridge = useContext(BridgeContext);
const store = useContext(StoreContext);
const {parseHookNames: parseHookNamesByDefault} = useContext(SettingsContext);
// parseHookNames has a lot of code.
// Embedding it into a build makes the build large.
// This function enables DevTools to make use of Suspense to lazily import() it only if the feature will be used.
// TODO (Webpack 5) Hopefully we can remove this indirection once the Webpack 5 upgrade is completed.
const hookNamesModuleLoader = useContext(HookNamesModuleLoaderContext);
const refresh = useCacheRefresh();
// Temporarily stores most recently-inspected (hydrated) path.
// The transition that updates this causes the component to re-render and ask the cache->backend for the new path.
// When a path is sent along with an "inspectElement" request,
// the backend knows to send its dehydrated data even if the element hasn't updated since the last request.
const [state, setState] = useState<{
element: Element | null,
path: Array<number | string> | null,
}>({
element: null,
path: null,
});
const element =
inspectedElementID !== null
? store.getElementByID(inspectedElementID)
: null;
const alreadyLoadedHookNames =
element != null && hasAlreadyLoadedHookNames(element);
// Parse the currently inspected element's hook names.
// This may be enabled by default (for all elements)
// or it may be opted into on a per-element basis (if it's too slow to be on by default).
const [parseHookNames, setParseHookNames] = useState<boolean>(
parseHookNamesByDefault || alreadyLoadedHookNames,
);
const [bridgeIsAlive, setBridgeIsAliveStatus] = useState<boolean>(true);
const elementHasChanged = element !== null && element !== state.element;
// Reset the cached inspected paths when a new element is selected.
if (elementHasChanged) {
setState({
element,
path: null,
});
setParseHookNames(parseHookNamesByDefault || alreadyLoadedHookNames);
}
const purgeCachedMetadataRef = useRef(null);
// Don't load a stale element from the backend; it wastes bridge bandwidth.
let hookNames: HookNames | null = null;
let inspectedElement = null;
if (!elementHasChanged && element !== null) {
inspectedElement = inspectElement(element, state.path, store, bridge);
if (typeof hookNamesModuleLoader === 'function') {
if (parseHookNames || alreadyLoadedHookNames) {
const hookNamesModule = loadModule(hookNamesModuleLoader);
if (hookNamesModule !== null) {
const {parseHookNames: loadHookNamesFunction, purgeCachedMetadata} =
hookNamesModule;
purgeCachedMetadataRef.current = purgeCachedMetadata;
if (
inspectedElement !== null &&
inspectedElement.hooks !== null &&
loadHookNamesFunction !== null
) {
hookNames = loadHookNames(
Domain
Subdomains
Source
Frequently Asked Questions
What does InspectedElementContextController() do?
InspectedElementContextController() is a function in the react codebase, defined in packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js.
Where is InspectedElementContextController() defined?
InspectedElementContextController() is defined in packages/react-devtools-shared/src/devtools/views/Components/InspectedElementContext.js at line 66.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free