Home / Function/ ValidateMemoization() — react Function Reference

ValidateMemoization() — react Function Reference

Architecture documentation for the ValidateMemoization() function in shared-runtime.ts from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  45f63875_3ae4_2f5e_5c13_d3db35bb73dd["ValidateMemoization()"]
  9afdd6fb_14c3_0a52_8105_2d82e58c5c28["shared-runtime.ts"]
  45f63875_3ae4_2f5e_5c13_d3db35bb73dd -->|defined in| 9afdd6fb_14c3_0a52_8105_2d82e58c5c28
  style 45f63875_3ae4_2f5e_5c13_d3db35bb73dd fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

compiler/packages/snap/src/sprout/shared-runtime.ts lines 268–300

export function ValidateMemoization({
  inputs,
  output: rawOutput,
  onlyCheckCompiled = false,
}: {
  inputs: Array<any>;
  output: any;
  onlyCheckCompiled?: boolean;
}): React.ReactElement {
  'use no forget';
  // Wrap rawOutput as it might be a function, which useState would invoke.
  const output = {value: rawOutput};
  const [previousInputs, setPreviousInputs] = React.useState(inputs);
  const [previousOutput, setPreviousOutput] = React.useState(output);
  if (
    !onlyCheckCompiled ||
    (onlyCheckCompiled &&
      (globalThis as any).__SNAP_EVALUATOR_MODE === 'forget')
  ) {
    if (
      inputs.length !== previousInputs.length ||
      inputs.some((item, i) => item !== previousInputs[i])
    ) {
      // Some input changed, we expect the output to change
      setPreviousInputs(inputs);
      setPreviousOutput(output);
    } else if (output.value !== previousOutput.value) {
      // Else output should be stable
      throw new Error('Output identity changed but inputs did not');
    }
  }
  return React.createElement(Stringify, {inputs, output: rawOutput});
}

Domain

Subdomains

Frequently Asked Questions

What does ValidateMemoization() do?
ValidateMemoization() is a function in the react codebase, defined in compiler/packages/snap/src/sprout/shared-runtime.ts.
Where is ValidateMemoization() defined?
ValidateMemoization() is defined in compiler/packages/snap/src/sprout/shared-runtime.ts at line 268.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free