getHookName() — react Function Reference
Architecture documentation for the getHookName() function in astUtils.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD ae74fc61_22de_3ac9_6314_d002de1a11ab["getHookName()"] 22acaf1d_d624_cc04_9046_5e8603f3a58d["astUtils.js"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|defined in| 22acaf1d_d624_cc04_9046_5e8603f3a58d 8fcd4639_43fc_b147_7c26_e198696286ab["findHookNames()"] 8fcd4639_43fc_b147_7c26_e198696286ab -->|calls| ae74fc61_22de_3ac9_6314_d002de1a11ab 1fcb15c0_e9b6_04cb_5be9_a3f60ec9471d["getPotentialHookDeclarationsFromAST()"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|calls| 1fcb15c0_e9b6_04cb_5be9_a3f60ec9471d 084c323b_7361_94be_de61_55a1aff4c014["checkNodeLocation()"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|calls| 084c323b_7361_94be_de61_55a1aff4c014 1bf7e74a_96b7_ab97_b607_d0a528f9046e["isConfirmedHookDeclaration()"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|calls| 1bf7e74a_96b7_ab97_b607_d0a528f9046e 8f20542e_3cd7_577b_d616_7755284e5d75["getFilteredHookASTNodes()"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|calls| 8f20542e_3cd7_577b_d616_7755284e5d75 4b550904_a2c6_c391_cba6_f44de349ba07["getHookNameFromNode()"] ae74fc61_22de_3ac9_6314_d002de1a11ab -->|calls| 4b550904_a2c6_c391_cba6_f44de349ba07 style ae74fc61_22de_3ac9_6314_d002de1a11ab fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-devtools-shared/src/hooks/astUtils.js lines 131–205
export function getHookName(
hook: HooksNode,
originalSourceAST: mixed,
originalSourceCode: string,
originalSourceLineNumber: number,
originalSourceColumnNumber: number,
): string | null {
const hooksFromAST = withSyncPerfMeasurements(
'getPotentialHookDeclarationsFromAST(originalSourceAST)',
() => getPotentialHookDeclarationsFromAST(originalSourceAST),
);
let potentialReactHookASTNode = null;
if (originalSourceColumnNumber === 0) {
// This most likely indicates a source map type like 'cheap-module-source-map'
// that intentionally drops column numbers for compilation speed in DEV builds.
// In this case, we can assume there's probably only one hook per line (true in most cases)
// and just fail if we find more than one match.
const matchingNodes = hooksFromAST.filter(node => {
const nodeLocationCheck = checkNodeLocation(
node,
originalSourceLineNumber,
);
const hookDeclarationCheck = isConfirmedHookDeclaration(node);
return nodeLocationCheck && hookDeclarationCheck;
});
if (matchingNodes.length === 1) {
potentialReactHookASTNode = matchingNodes[0];
}
} else {
potentialReactHookASTNode = hooksFromAST.find(node => {
const nodeLocationCheck = checkNodeLocation(
node,
originalSourceLineNumber,
originalSourceColumnNumber,
);
const hookDeclarationCheck = isConfirmedHookDeclaration(node);
return nodeLocationCheck && hookDeclarationCheck;
});
}
if (!potentialReactHookASTNode) {
return null;
}
// nodesAssociatedWithReactHookASTNode could directly be used to obtain the hook variable name
// depending on the type of potentialReactHookASTNode
try {
const nodesAssociatedWithReactHookASTNode = withSyncPerfMeasurements(
'getFilteredHookASTNodes()',
() =>
getFilteredHookASTNodes(
potentialReactHookASTNode,
hooksFromAST,
originalSourceCode,
),
);
const name = withSyncPerfMeasurements('getHookNameFromNode()', () =>
getHookNameFromNode(
hook,
nodesAssociatedWithReactHookASTNode,
potentialReactHookASTNode,
),
);
return name;
} catch (error) {
console.error(error);
return null;
}
}
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does getHookName() do?
getHookName() is a function in the react codebase, defined in packages/react-devtools-shared/src/hooks/astUtils.js.
Where is getHookName() defined?
getHookName() is defined in packages/react-devtools-shared/src/hooks/astUtils.js at line 131.
What does getHookName() call?
getHookName() calls 5 function(s): checkNodeLocation, getFilteredHookASTNodes, getHookNameFromNode, getPotentialHookDeclarationsFromAST, isConfirmedHookDeclaration.
What calls getHookName()?
getHookName() is called by 1 function(s): findHookNames.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free