Home / File/ repro-invalid-reactivity-value-block.ts — react Source File

repro-invalid-reactivity-value-block.ts — react Source File

Architecture documentation for repro-invalid-reactivity-value-block.ts, a typescript file in the react codebase. 1 imports, 0 dependents.

File typescript TestingUtilities Fixtures 1 imports 1 functions

Entity Profile

Dependency Diagram

graph LR
  2b9606b7_564d_03e2_7eb2_c2c8af8685aa["repro-invalid-reactivity-value-block.ts"]
  006eec3d_77a9_4a47_e6c1_a96d7a6c9c05["shared-runtime"]
  2b9606b7_564d_03e2_7eb2_c2c8af8685aa --> 006eec3d_77a9_4a47_e6c1_a96d7a6c9c05
  style 2b9606b7_564d_03e2_7eb2_c2c8af8685aa fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import {
  CONST_TRUE,
  identity,
  makeObject_Primitives,
  useNoAlias,
} from 'shared-runtime';

/**
 * Here the scope for `obj` is pruned because it spans the `useNoAlias()` hook call.
 * Because `obj` is non-reactive, it would by default be excluded as dependency for
 * `result = [...identity(obj)..., obj]`, but this could then cause the values in
 * `result` to be out of sync with `obj`.
 *
 * The fix is to consider pruned memo block outputs as reactive, since they will
 * recreate on every render. This means `thing` depends on both y and z.
 */
function Foo() {
  const obj = makeObject_Primitives();
  // hook calls keeps the next two lines as its own reactive scope
  useNoAlias();

  const shouldCaptureObj = obj != null && CONST_TRUE;
  const result = [shouldCaptureObj ? identity(obj) : null, obj];

  useNoAlias(result, obj);

  if (shouldCaptureObj && result[0] !== obj) {
    throw new Error('Unexpected');
  }
  return result;
}

export const FIXTURE_ENTRYPOINT = {
  fn: Foo,
  params: [{}],
  sequentialRenders: [{}, {}],
};

Subdomains

Functions

Dependencies

  • shared-runtime

Frequently Asked Questions

What does repro-invalid-reactivity-value-block.ts do?
repro-invalid-reactivity-value-block.ts is a source file in the react codebase, written in typescript. It belongs to the TestingUtilities domain, Fixtures subdomain.
What functions are defined in repro-invalid-reactivity-value-block.ts?
repro-invalid-reactivity-value-block.ts defines 1 function(s): Foo.
What does repro-invalid-reactivity-value-block.ts depend on?
repro-invalid-reactivity-value-block.ts imports 1 module(s): shared-runtime.
Where is repro-invalid-reactivity-value-block.ts in the architecture?
repro-invalid-reactivity-value-block.ts is located at compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler/repro-invalid-reactivity-value-block.ts (domain: TestingUtilities, subdomain: Fixtures, directory: compiler/packages/babel-plugin-react-compiler/src/__tests__/fixtures/compiler).

Analyze Your Own Codebase

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

Try Supermodel Free