commitHookEffectListMount() — react Function Reference
Architecture documentation for the commitHookEffectListMount() function in ReactFiberCommitEffects.js from the react codebase.
Entity Profile
Dependency Diagram
graph TD 9fd588c7_bccc_26bc_b726_517f00094e4a["commitHookEffectListMount()"] 8f5342bb_933e_6410_b584_cc120047394a["ReactFiberCommitEffects.js"] 9fd588c7_bccc_26bc_b726_517f00094e4a -->|defined in| 8f5342bb_933e_6410_b584_cc120047394a 14488ed6_0070_cb72_08ff_37fc5c860d29["recursivelyInsertNewFiber()"] 14488ed6_0070_cb72_08ff_37fc5c860d29 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a a9dc2423_dea6_d2a0_0ec6_d7730bfd6c66["commitHookLayoutEffects()"] a9dc2423_dea6_d2a0_0ec6_d7730bfd6c66 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a a91297ff_1cc6_aa85_0c1f_efacbbff1de9["commitHookPassiveMountEffects()"] a91297ff_1cc6_aa85_0c1f_efacbbff1de9 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a bc4a6de9_07dc_eca7_681a_10f692e08483["commitMutationEffectsOnFiber()"] bc4a6de9_07dc_eca7_681a_10f692e08483 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a e70ee3de_87b0_d2f3_6d74_b22e45353773["invokeLayoutEffectMountInDEV()"] e70ee3de_87b0_d2f3_6d74_b22e45353773 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a 6e4a054d_9ff9_012b_a02d_01c569b3f208["invokePassiveEffectMountInDEV()"] 6e4a054d_9ff9_012b_a02d_01c569b3f208 -->|calls| 9fd588c7_bccc_26bc_b726_517f00094e4a b9112e3c_817d_b2df_a23c_d4990b8583ff["markComponentPassiveEffectMountStarted()"] 9fd588c7_bccc_26bc_b726_517f00094e4a -->|calls| b9112e3c_817d_b2df_a23c_d4990b8583ff 1631c1bb_91e9_dea8_2696_301b2a85091c["markComponentLayoutEffectMountStarted()"] 9fd588c7_bccc_26bc_b726_517f00094e4a -->|calls| 1631c1bb_91e9_dea8_2696_301b2a85091c b0e2cbc6_6f5a_326b_7182_fad922785eb2["markComponentPassiveEffectMountStopped()"] 9fd588c7_bccc_26bc_b726_517f00094e4a -->|calls| b0e2cbc6_6f5a_326b_7182_fad922785eb2 5b38d4ad_979a_7c09_fdfc_fcbd5f3fd63c["markComponentLayoutEffectMountStopped()"] 9fd588c7_bccc_26bc_b726_517f00094e4a -->|calls| 5b38d4ad_979a_7c09_fdfc_fcbd5f3fd63c style 9fd588c7_bccc_26bc_b726_517f00094e4a fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/react-reconciler/src/ReactFiberCommitEffects.js lines 141–246
export function commitHookEffectListMount(
flags: HookFlags,
finishedWork: Fiber,
) {
try {
const updateQueue: FunctionComponentUpdateQueue | null =
(finishedWork.updateQueue: any);
const lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
if (lastEffect !== null) {
const firstEffect = lastEffect.next;
let effect = firstEffect;
do {
if ((effect.tag & flags) === flags) {
if (enableSchedulingProfiler) {
if ((flags & HookPassive) !== NoHookEffect) {
markComponentPassiveEffectMountStarted(finishedWork);
} else if ((flags & HookLayout) !== NoHookEffect) {
markComponentLayoutEffectMountStarted(finishedWork);
}
}
// Mount
let destroy;
if (__DEV__) {
if ((flags & HookInsertion) !== NoHookEffect) {
setIsRunningInsertionEffect(true);
}
destroy = runWithFiberInDEV(finishedWork, callCreateInDEV, effect);
if ((flags & HookInsertion) !== NoHookEffect) {
setIsRunningInsertionEffect(false);
}
} else {
const create = effect.create;
const inst = effect.inst;
destroy = create();
inst.destroy = destroy;
}
if (enableSchedulingProfiler) {
if ((flags & HookPassive) !== NoHookEffect) {
markComponentPassiveEffectMountStopped();
} else if ((flags & HookLayout) !== NoHookEffect) {
markComponentLayoutEffectMountStopped();
}
}
if (__DEV__) {
if (destroy !== undefined && typeof destroy !== 'function') {
let hookName;
if ((effect.tag & HookLayout) !== NoFlags) {
hookName = 'useLayoutEffect';
} else if ((effect.tag & HookInsertion) !== NoFlags) {
hookName = 'useInsertionEffect';
} else {
hookName = 'useEffect';
}
let addendum;
if (destroy === null) {
addendum =
' You returned null. If your effect does not require clean ' +
'up, return undefined (or nothing).';
// $FlowFixMe (@poteto) this check is safe on arbitrary non-null/void objects
} else if (typeof destroy.then === 'function') {
addendum =
'\n\nIt looks like you wrote ' +
hookName +
'(async () => ...) or returned a Promise. ' +
'Instead, write the async function inside your effect ' +
'and call it immediately:\n\n' +
hookName +
'(() => {\n' +
' async function fetchData() {\n' +
' // You can await here\n' +
' const response = await MyAPI.getData(someId);\n' +
' // ...\n' +
' }\n' +
' fetchData();\n' +
`}, [someId]); // Or [] if effect doesn't need props or state\n\n` +
'Learn more about data fetching with Hooks: https://react.dev/link/hooks-data-fetching';
} else {
// $FlowFixMe[unsafe-addition] (@poteto)
Domain
Subdomains
Calls
Called By
Source
Frequently Asked Questions
What does commitHookEffectListMount() do?
commitHookEffectListMount() is a function in the react codebase, defined in packages/react-reconciler/src/ReactFiberCommitEffects.js.
Where is commitHookEffectListMount() defined?
commitHookEffectListMount() is defined in packages/react-reconciler/src/ReactFiberCommitEffects.js at line 141.
What does commitHookEffectListMount() call?
commitHookEffectListMount() calls 4 function(s): markComponentLayoutEffectMountStarted, markComponentLayoutEffectMountStopped, markComponentPassiveEffectMountStarted, markComponentPassiveEffectMountStopped.
What calls commitHookEffectListMount()?
commitHookEffectListMount() is called by 6 function(s): commitHookLayoutEffects, commitHookPassiveMountEffects, commitMutationEffectsOnFiber, invokeLayoutEffectMountInDEV, invokePassiveEffectMountInDEV, recursivelyInsertNewFiber.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free