微前端子应用卸载时组件没销毁,怎么解决?
我在用 qiankun 搭建微前端项目,主应用加载 Vue 子应用没问题,但切换路由卸载子应用时,发现子应用的组件没有被销毁,生命周期钩子 beforeDestroy 也没触发。是不是我哪里没配对?
子应用入口是这样写的:
<template>
<div id="app">
<MyComponent />
</div>
</template>
<script>
export default {
name: 'App',
beforeDestroy() {
console.log('App destroyed');
}
}
</script>
主应用用的是手动加载方式,调用了 unmount 方法,但好像没起作用……
mount和unmount生命周期钩子,qiankun 的卸载依赖这两个函数,Vue 子应用的销毁逻辑必须在unmount里手动调用app.$destroy()或者app.unmount(),否则组件不会销毁。比如你的
main.js应该长这样: