Home / Function/ _dispatch() — react Function Reference

_dispatch() — react Function Reference

Architecture documentation for the _dispatch() function in simulateBrowserEventDispatch.js from the react codebase.

Entity Profile

Dependency Diagram

graph TD
  c57044b1_8e5d_8b41_e59b_a52a4de1a86f["_dispatch()"]
  25f70bd8_f112_d04a_4a3f_6a33aba6b460["simulateBrowserEventDispatch.js"]
  c57044b1_8e5d_8b41_e59b_a52a4de1a86f -->|defined in| 25f70bd8_f112_d04a_4a3f_6a33aba6b460
  5f9bdee1_5ef6_6ad1_84f6_866ec451180c["wrapperForImpl()"]
  c57044b1_8e5d_8b41_e59b_a52a4de1a86f -->|calls| 5f9bdee1_5ef6_6ad1_84f6_866ec451180c
  de298265_d49d_6090_524a_116b80fe9878["appendToEventPath()"]
  c57044b1_8e5d_8b41_e59b_a52a4de1a86f -->|calls| de298265_d49d_6090_524a_116b80fe9878
  be0b20e5_61c4_ad85_29c7_9975c5ab309c["invokeEventListeners()"]
  c57044b1_8e5d_8b41_e59b_a52a4de1a86f -->|calls| be0b20e5_61c4_ad85_29c7_9975c5ab309c
  style c57044b1_8e5d_8b41_e59b_a52a4de1a86f fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/internal-test-utils/simulateBrowserEventDispatch.js lines 62–250

async function _dispatch(eventImpl, legacyTargetOverrideFlag) {
  // Hack: save the wrapper Symbol.
  wrapperSymbol = Object.getOwnPropertySymbols(eventImpl)[0];

  let targetImpl = this;
  let clearTargets = false;
  let activationTarget = null;

  eventImpl._dispatchFlag = true;

  const targetOverride = legacyTargetOverrideFlag
    ? wrapperForImpl(targetImpl._globalObject._document)
    : targetImpl;
  let relatedTarget = retarget(eventImpl.relatedTarget, targetImpl);

  if (targetImpl !== relatedTarget || targetImpl === eventImpl.relatedTarget) {
    const touchTargets = [];

    appendToEventPath(
      eventImpl,
      targetImpl,
      targetOverride,
      relatedTarget,
      touchTargets,
      false,
    );

    const isActivationEvent = false; // TODO Not ported in fork.

    if (isActivationEvent && targetImpl._hasActivationBehavior) {
      activationTarget = targetImpl;
    }

    let slotInClosedTree = false;
    let slotable =
      isSlotable(targetImpl) && targetImpl._assignedSlot ? targetImpl : null;
    let parent = getEventTargetParent(targetImpl, eventImpl);

    // Populate event path
    // https://dom.spec.whatwg.org/#event-path
    while (parent !== null) {
      if (slotable !== null) {
        if (parent.localName !== 'slot') {
          throw new Error(`JSDOM Internal Error: Expected parent to be a Slot`);
        }

        slotable = null;

        const parentRoot = nodeRoot(parent);
        if (isShadowRoot(parentRoot) && parentRoot.mode === 'closed') {
          slotInClosedTree = true;
        }
      }

      if (isSlotable(parent) && parent._assignedSlot) {
        slotable = parent;
      }

      relatedTarget = retarget(eventImpl.relatedTarget, parent);

      if (
        (isNode(parent) &&
          isShadowInclusiveAncestor(nodeRoot(targetImpl), parent)) ||
        wrapperForImpl(parent).constructor.name === 'Window'
      ) {
        if (
          isActivationEvent &&
          eventImpl.bubbles &&
          activationTarget === null &&
          parent._hasActivationBehavior
        ) {
          activationTarget = parent;
        }

        appendToEventPath(
          eventImpl,
          parent,
          null,
          relatedTarget,
          touchTargets,
          slotInClosedTree,

Domain

Subdomains

Frequently Asked Questions

What does _dispatch() do?
_dispatch() is a function in the react codebase, defined in packages/internal-test-utils/simulateBrowserEventDispatch.js.
Where is _dispatch() defined?
_dispatch() is defined in packages/internal-test-utils/simulateBrowserEventDispatch.js at line 62.
What does _dispatch() call?
_dispatch() calls 3 function(s): appendToEventPath, invokeEventListeners, wrapperForImpl.

Analyze Your Own Codebase

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

Try Supermodel Free