diff --git a/packages/fes-plugin-layout/src/runtime/views/MultiTabProvider.vue b/packages/fes-plugin-layout/src/runtime/views/MultiTabProvider.vue index 128e4bd7..c3e027c6 100644 --- a/packages/fes-plugin-layout/src/runtime/views/MultiTabProvider.vue +++ b/packages/fes-plugin-layout/src/runtime/views/MultiTabProvider.vue @@ -31,8 +31,11 @@ - - + + @@ -68,11 +71,12 @@ export default { return { path: _route.path, route: _route, - name: _route.meta.name, + name: _route.meta.name ?? _route.name, title: computed(() => transTitle(title)), key: getKey() }; }; + const keepAlivePages = ref([]); const route = useRoute(); const router = useRouter(); @@ -122,6 +126,12 @@ export default { } list.splice(index, 1); pageList.value = list; + const _keepAlivePages = [...keepAlivePages.value]; + const keepIndex = _keepAlivePages.indexOf(selectedPage.name); + if (keepIndex !== -1) { + _keepAlivePages.splice(keepIndex, 1); + } + keepAlivePages.value = _keepAlivePages; }; const reloadPage = (path) => { const selectedPage = findPage(path || unref(route.path)); @@ -132,6 +142,7 @@ export default { const closeOtherPage = (path) => { const selectedPage = findPage(path || unref(route.path)); pageList.value = [selectedPage]; + keepAlivePages.value = [selectedPage.name]; }; const getPageKey = (_route) => { const selectedPage = findPage(_route.path); @@ -151,10 +162,10 @@ export default { default: } }; - const keepAlivePages = ref([]); - const getComponent = (Component, _route) => { - if (_route.meta['keep-alive']) { - const name = _route.meta?.name || _route.name; + + const getComponent = (Component, _route, isKeep = false) => { + if (isKeep || _route.meta['keep-alive']) { + const name = _route.meta?.name ?? _route.name; if (name) { // 修改组件的 name Component.type.name = name; diff --git a/packages/fes-plugin-qiankun/examples/main/.fes.js b/packages/fes-plugin-qiankun/examples/main/.fes.js index 051e0203..3bd8f471 100644 --- a/packages/fes-plugin-qiankun/examples/main/.fes.js +++ b/packages/fes-plugin-qiankun/examples/main/.fes.js @@ -10,7 +10,7 @@ export default { layout: { title: "Fes.js", footer: 'Created by MumbleFE', - multiTabs: false, + multiTabs: true, navigation: 'mixin', menus: [{ name: 'index', diff --git a/packages/fes-plugin-qiankun/src/main/runtime/MicroApp.tpl b/packages/fes-plugin-qiankun/src/main/runtime/MicroApp.tpl index 35a89d7e..12d72596 100644 --- a/packages/fes-plugin-qiankun/src/main/runtime/MicroApp.tpl +++ b/packages/fes-plugin-qiankun/src/main/runtime/MicroApp.tpl @@ -77,7 +77,7 @@ export const MicroApp = defineComponent({ const appConfig = appConfigRef.value; const { name, entry } = appConfig; // 加载新的 - microAppRef.value = loadMicroApp( + const app = loadMicroApp( { // 保证唯一 name: `${name}`, @@ -96,6 +96,10 @@ export const MicroApp = defineComponent({ (v1, v2) => concat(v1 ?? [], v2 ?? []) ) ); + app.mount().catch((e)=>{ + console.log(e) + }) + microAppRef.value = app; }; // 当参数变化时,update子应用