From a6b596929b3119ace3327f97727aef92da9a7c5e Mon Sep 17 00:00:00 2001 From: wanchun <445436867@qq.com> Date: Mon, 6 Jun 2022 16:29:45 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E9=A1=B5=E7=AD=BE=E6=97=B6?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E9=A1=B5=E9=9D=A2=E9=9C=80=E8=A6=81=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/runtime/views/MultiTabProvider.vue | 25 +++++++++++++------ .../fes-plugin-qiankun/examples/main/.fes.js | 2 +- .../src/main/runtime/MicroApp.tpl | 6 ++++- 3 files changed, 24 insertions(+), 9 deletions(-) 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子应用