_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
Source
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