Home / Function/ getHookName() — react Function Reference

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

Called By

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