File tree 2 files changed +31
-26
lines changed
packages/runtime-core/src
2 files changed +31
-26
lines changed Original file line number Diff line number Diff line change @@ -521,9 +521,9 @@ function createSuspenseBoundary(
521
521
if ( suspense . isHydrating ) {
522
522
suspense . isHydrating = false
523
523
} else if ( ! resume ) {
524
- if ( preEffects ) {
524
+ if ( preEffects . length ) {
525
525
preEffects . forEach ( e => e ( ) )
526
- preEffects . length = 0
526
+ suspense . preEffects = [ ]
527
527
}
528
528
delayEnter =
529
529
activeBranch &&
@@ -730,29 +730,22 @@ function createSuspenseBoundary(
730
730
} ,
731
731
732
732
unmount ( parentSuspense , doRemove ) {
733
- const performUnmount = ( ) => {
734
- suspense . isUnmounted = true
735
- if ( suspense . activeBranch ) {
736
- unmount (
737
- suspense . activeBranch ,
738
- parentComponent ,
739
- parentSuspense ,
740
- doRemove ,
741
- )
742
- }
743
- if ( suspense . pendingBranch ) {
744
- unmount (
745
- suspense . pendingBranch ,
746
- parentComponent ,
747
- parentSuspense ,
748
- doRemove ,
749
- )
750
- }
733
+ suspense . isUnmounted = true
734
+ if ( suspense . activeBranch ) {
735
+ unmount (
736
+ suspense . activeBranch ,
737
+ parentComponent ,
738
+ parentSuspense ,
739
+ doRemove ,
740
+ )
751
741
}
752
- if ( parentSuspense && parentSuspense . deps > 0 ) {
753
- parentSuspense . preEffects . push ( performUnmount )
754
- } else {
755
- performUnmount ( )
742
+ if ( suspense . pendingBranch ) {
743
+ unmount (
744
+ suspense . pendingBranch ,
745
+ parentComponent ,
746
+ parentSuspense ,
747
+ doRemove ,
748
+ )
756
749
}
757
750
} ,
758
751
}
Original file line number Diff line number Diff line change @@ -2134,7 +2134,13 @@ function baseCreateRenderer(
2134
2134
unmountComponent ( vnode . component ! , parentSuspense , doRemove )
2135
2135
} else {
2136
2136
if ( __FEATURE_SUSPENSE__ && shapeFlag & ShapeFlags . SUSPENSE ) {
2137
- vnode . suspense ! . unmount ( parentSuspense , doRemove )
2137
+ if ( parentSuspense && parentSuspense . deps > 0 ) {
2138
+ parentSuspense . preEffects . push ( ( ) => {
2139
+ vnode . suspense ! . unmount ( parentSuspense , doRemove )
2140
+ } )
2141
+ } else {
2142
+ vnode . suspense ! . unmount ( parentSuspense , doRemove )
2143
+ }
2138
2144
return
2139
2145
}
2140
2146
@@ -2175,7 +2181,13 @@ function baseCreateRenderer(
2175
2181
}
2176
2182
2177
2183
if ( doRemove ) {
2178
- remove ( vnode )
2184
+ if ( parentSuspense && parentSuspense . deps > 0 ) {
2185
+ parentSuspense . preEffects . push ( ( ) => {
2186
+ remove ( vnode )
2187
+ } )
2188
+ } else {
2189
+ remove ( vnode )
2190
+ }
2179
2191
}
2180
2192
}
2181
2193
You can’t perform that action at this time.
0 commit comments