mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-08-16 18:17:31 +08:00
fix(vue): tapping the active tab button now correctly resets the tab stack (#24935)
resolves #24934
This commit is contained in:
@ -92,16 +92,39 @@ export const createLocationHistory = () => {
|
||||
* and every entry that appears after it.
|
||||
*/
|
||||
const clearHistory = (routeInfo?: RouteInfo) => {
|
||||
Object.keys(tabsHistory).forEach(key => {
|
||||
tabsHistory[key] = [];
|
||||
});
|
||||
|
||||
if (routeInfo) {
|
||||
|
||||
/**
|
||||
* If there is no route index in locationHistory
|
||||
* then there will not be any route index in
|
||||
* tabs either.
|
||||
*/
|
||||
const existingRouteIndex = locationHistory.findIndex(r => r.position === routeInfo.position);
|
||||
if (existingRouteIndex === -1) return;
|
||||
|
||||
locationHistory.splice(existingRouteIndex);
|
||||
|
||||
/**
|
||||
* We also need to search the current tab
|
||||
* to correctly reset the individual tab
|
||||
* stack. We should not clear the entire
|
||||
* tab stack as that means we will lose
|
||||
* a reference to the root tab route.
|
||||
*/
|
||||
const { tab } = routeInfo;
|
||||
const tabHistory = tabsHistory[tab];
|
||||
if (tab && tabHistory) {
|
||||
const existingTabRouteIndex = tabHistory.findIndex(r => r.position === routeInfo.position);
|
||||
if (existingTabRouteIndex === -1) return;
|
||||
|
||||
tabsHistory[tab].splice(existingTabRouteIndex);
|
||||
}
|
||||
|
||||
} else {
|
||||
Object.keys(tabsHistory).forEach(key => {
|
||||
tabsHistory[key] = [];
|
||||
});
|
||||
|
||||
locationHistory.length = 0;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user