File tree 1 file changed +14
-5
lines changed
1 file changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -51,18 +51,27 @@ export function resolveAsyncComponent (
51
51
return factory . resolved
52
52
}
53
53
54
+ const owner = currentRenderingInstance
55
+ if ( isDef ( factory . owners ) && factory . owners . indexOf ( owner ) === - 1 ) {
56
+ // already pending
57
+ factory . owners . push ( owner )
58
+ }
59
+
54
60
if ( isTrue ( factory . loading ) && isDef ( factory . loadingComp ) ) {
55
61
return factory . loadingComp
56
62
}
57
63
58
- const owner = currentRenderingInstance
59
- if ( isDef ( factory . owners ) ) {
60
- // already pending
61
- factory . owners . push ( owner )
62
- } else {
64
+ if ( ! isDef ( factory . owners ) ) {
63
65
const owners = factory . owners = [ owner ]
64
66
let sync = true
65
67
68
+ const removeOwner = ( destroyedOwner ) => {
69
+ const index = owners . indexOf ( destroyedOwner )
70
+ if ( index > - 1 ) owners . splice ( index , 1 )
71
+ }
72
+
73
+ if ( owner ) owner . $on ( 'hook:destroyed' , ( ) => removeOwner ( owner ) )
74
+
66
75
const forceRender = ( renderCompleted : boolean ) => {
67
76
for ( let i = 0 , l = owners . length ; i < l ; i ++ ) {
68
77
( owners [ i ] : any ) . $forceUpdate ( )
You can’t perform that action at this time.
0 commit comments