Skip to content

Commit 171ca2a

Browse files
committed
fix(components): fixed issue with keepAlive not working correctly for initial page routes
1 parent f882766 commit 171ca2a

File tree

6 files changed

+44
-8
lines changed

6 files changed

+44
-8
lines changed

src/react/components/view.jsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ const View = forwardRef((props, ref) => {
109109
const routerData = useRef(null);
110110

111111
let initialPage;
112+
let initialRoute;
112113

113114
const onViewInit = (view) => {
114115
emit(props, 'viewInit', view);
@@ -135,7 +136,9 @@ const View = forwardRef((props, ref) => {
135136
};
136137
f7routers.views.push(routerData.current);
137138
if (f7View.current && f7View.current.router && (url || main)) {
138-
initialPage = getRouterInitialComponent(f7View.current.router, initialPageComponent);
139+
const initialData = getRouterInitialComponent(f7View.current.router, initialPageComponent);
140+
initialPage = initialData.initialPage;
141+
initialRoute = initialData.initialRoute;
139142
}
140143
}
141144

@@ -184,13 +187,19 @@ const View = forwardRef((props, ref) => {
184187
f7View.current.init(elRef.current);
185188
if (initialPage) {
186189
initialPage.el = f7View.current.router.currentPageEl;
190+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
191+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
192+
}
187193
}
188194
}, 100);
189195
});
190196
} else {
191197
f7View.current.init(elRef.current);
192198
if (initialPage) {
193199
initialPage.el = f7View.current.router.currentPageEl;
200+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
201+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
202+
}
194203
}
195204
}
196205
} else {

src/react/shared/get-router-initial-component.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@ export const getRouterInitialComponent = (router, initialComponent) => {
3535
},
3636
};
3737
}
38-
return initialComponentData;
38+
return {
39+
initialPage: initialComponentData,
40+
initialRoute,
41+
};
3942
};

src/svelte/components/view.svelte

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
const { main, tab, tabActive, browserHistoryInitialMatch = true } = $$props;
2222
2323
let initialPage;
24+
let initialRoute;
2425
let el;
2526
let routerData;
2627
let f7View;
@@ -54,7 +55,9 @@
5455
};
5556
f7routers.views.push(routerData);
5657
if (f7View && f7View.router && (url || main)) {
57-
initialPage = getRouterInitialComponent(f7View.router);
58+
const initialData = getRouterInitialComponent(f7View.router);
59+
initialPage = initialData.initialPage;
60+
initialRoute = initialData.initialRoute;
5861
}
5962
}
6063
@@ -107,14 +110,20 @@
107110
setTimeout(() => {
108111
f7View.init(el);
109112
if (initialPage) {
110-
initialPage.el = f7View.routerPageEl;
113+
initialPage.el = f7View.router.currentPageEl;
114+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
115+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
116+
}
111117
}
112118
}, 100);
113119
});
114120
} else {
115121
f7View.init(el);
116122
if (initialPage) {
117-
initialPage.el = f7View.routerPageEl;
123+
initialPage.el = f7View.router.currentPageEl;
124+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
125+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
126+
}
118127
}
119128
}
120129
} else {

src/svelte/shared/get-router-initial-component.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@ export const getRouterInitialComponent = (router, initialComponent) => {
3535
},
3636
};
3737
}
38-
return initialComponentData;
38+
return {
39+
initialPage: initialComponentData,
40+
initialRoute,
41+
};
3942
};

src/vue/components/view.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ export default {
207207
let routerData = null;
208208
209209
let initialPage;
210+
let initialRoute;
210211
211212
const onViewInit = (view) => {
212213
emit('view:init', view);
@@ -238,7 +239,9 @@ export default {
238239
};
239240
f7routers.views.push(routerData);
240241
if (f7View && f7View.router && (props.url || props.main)) {
241-
initialPage = getRouterInitialComponent(f7View.router, initialPageComponent);
242+
const initialData = getRouterInitialComponent(f7View.router, initialPageComponent);
243+
initialPage = initialData.initialPage;
244+
initialRoute = initialData.initialRoute;
242245
}
243246
}
244247
@@ -289,13 +292,19 @@ export default {
289292
f7View.init(elRef.value);
290293
if (initialPage) {
291294
initialPage.el = f7View.router.currentPageEl;
295+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
296+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
297+
}
292298
}
293299
}, 100);
294300
});
295301
} else {
296302
f7View.init(elRef.value);
297303
if (initialPage) {
298304
initialPage.el = f7View.router.currentPageEl;
305+
if (initialRoute && initialRoute.route && initialRoute.route.keepAlive) {
306+
initialRoute.route.keepAliveData = { pageEl: initialPage.el };
307+
}
299308
}
300309
}
301310
} else {

src/vue/shared/get-router-initial-component.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,8 @@ export const getRouterInitialComponent = (router, initialComponent) => {
3535
},
3636
};
3737
}
38-
return initialComponentData;
38+
return {
39+
initialPage: initialComponentData,
40+
initialRoute,
41+
};
3942
};

0 commit comments

Comments
 (0)