MCPcopy Index your code
hub / github.com/react/react / disappearLayoutEffects

Function disappearLayoutEffects

packages/react-reconciler/src/ReactFiberCommitWork.js:2908–3018  ·  view source on GitHub ↗
(finishedWork: Fiber)

Source from the content-addressed store, hash-verified

2906}
2907
2908export function disappearLayoutEffects(finishedWork: Fiber) {
2909 const prevEffectStart = pushComponentEffectStart();
2910 const prevEffectDuration = pushComponentEffectDuration();
2911 const prevEffectErrors = pushComponentEffectErrors();
2912 const prevEffectDidSpawnUpdate = pushComponentEffectDidSpawnUpdate();
2913 switch (finishedWork.tag) {
2914 case FunctionComponent:
2915 case ForwardRef:
2916 case MemoComponent:
2917 case SimpleMemoComponent: {
2918 // TODO (Offscreen) Check: flags & LayoutStatic
2919 commitHookLayoutUnmountEffects(
2920 finishedWork,
2921 finishedWork.return,
2922 HookLayout,
2923 );
2924 recursivelyTraverseDisappearLayoutEffects(finishedWork);
2925 break;
2926 }
2927 case ClassComponent: {
2928 // TODO (Offscreen) Check: flags & RefStatic
2929 safelyDetachRef(finishedWork, finishedWork.return);
2930
2931 const instance = finishedWork.stateNode;
2932 if (typeof instance.componentWillUnmount === 'function') {
2933 safelyCallComponentWillUnmount(
2934 finishedWork,
2935 finishedWork.return,
2936 instance,
2937 );
2938 }
2939
2940 recursivelyTraverseDisappearLayoutEffects(finishedWork);
2941 break;
2942 }
2943 case HostSingleton: {
2944 if (supportsSingletons) {
2945 // TODO (Offscreen) Check: flags & RefStatic
2946 commitHostSingletonRelease(finishedWork);
2947 }
2948 // Expected fallthrough to HostComponent
2949 }
2950 case HostHoistable:
2951 case HostComponent: {
2952 // TODO (Offscreen) Check: flags & RefStatic
2953 safelyDetachRef(finishedWork, finishedWork.return);
2954
2955 if (enableFragmentRefs && finishedWork.tag === HostComponent) {
2956 commitFragmentInstanceDeletionEffects(finishedWork);
2957 }
2958
2959 recursivelyTraverseDisappearLayoutEffects(finishedWork);
2960 break;
2961 }
2962 case OffscreenComponent: {
2963 const isHidden = finishedWork.memoizedState !== null;
2964 if (isHidden) {
2965 // Nested Offscreen tree is already hidden. Don't disappear

Tested by

no test coverage detected