2790
if (deletions !== null) {
2791
for (let i = 0; i < deletions.length; i++) {
2792
const fiberToDelete = deletions[i];
2793
- // If this fiber (or anything below it) has passive effects then traverse the subtree.
2794
- const primaryEffectTag = fiberToDelete.effectTag & PassiveStatic;
2795
- const primarySubtreeTag =
2796
- fiberToDelete.subtreeTag & PassiveStaticSubtreeTag;
2797
- if (
2798
- primarySubtreeTag !== NoSubtreeTag ||
2799
- primaryEffectTag !== NoEffect
2800
- ) {
2801
- flushPassiveUnmountEffectsInsideOfDeletedTree(fiberToDelete);
2802
- }
2793
+ flushPassiveUnmountEffectsInsideOfDeletedTree(fiberToDelete);
2794
2795
// Now that passive effects have been processed, it's safe to detach lingering pointers.
2796
detachFiberAfterEffects(fiberToDelete);
2826
}
2827
2828
function flushPassiveUnmountEffectsInsideOfDeletedTree(
2838
- firstChild: Fiber,
2829
+ fiberToDelete: Fiber,
2830
): void {
2840
- let fiber = firstChild;
2841
- while (fiber !== null) {
2842
- const child = fiber.child;
2843
- if (child !== null) {
2844
- // If any children have passive effects then traverse the subtree.
2845
- // Note that this requires checking subtreeTag of the current Fiber,
2846
- // rather than the subtreeTag/effectsTag of the first child,
2847
- // since that would not cover passive effects in siblings.
2848
- const primarySubtreeTag = fiber.subtreeTag & PassiveStaticSubtreeTag;
2849
- if (primarySubtreeTag !== NoSubtreeTag) {
2850
- flushPassiveUnmountEffectsInsideOfDeletedTree(child);
2851
- }
2831
+ if ((fiberToDelete.subtreeTag & PassiveStaticSubtreeTag) !== NoSubtreeTag) {
2832
+ // If any children have passive effects then traverse the subtree.
2833
+ // Note that this requires checking subtreeTag of the current Fiber,
2834
+ // rather than the subtreeTag/effectsTag of the first child,
2835
+ // since that would not cover passive effects in siblings.
2836
+ let child = fiberToDelete.child;
2837
+ while (child !== null) {
2838
+ flushPassiveUnmountEffectsInsideOfDeletedTree(child);
2839
+ child = child.sibling;
2840
}
2841
+ }
2842
2854
- if ((fiber.effectTag & PassiveStatic) !== NoEffect) {
2855
- switch (fiber.tag) {
2856
- case FunctionComponent:
2857
- case ForwardRef:
2858
- case SimpleMemoComponent:
2859
- case Block: {
2860
- flushPassiveUnmountEffectsImpl(fiber, HookPassive);
2861
- }
2843
+ if ((fiberToDelete.effectTag & PassiveStatic) !== NoEffect) {
2844
+ switch (fiberToDelete.tag) {
2845
+ case FunctionComponent:
2846
+ case ForwardRef:
2847
+ case SimpleMemoComponent:
2848
+ case Block: {
2849
+ flushPassiveUnmountEffectsImpl(fiberToDelete, HookPassive);
2850
}
2851
}
2864
-
2865
- fiber = fiber.sibling;
2852
}
2853
}
2854