micro-frontend
micro-frontend copied to clipboard
请教一下对于css污染怎么处理
我是想给我的应用加一个独有class名称,然后在unmount的时候重写方法卸载他
下面是我的代码,注册应用的loadApp函数
export function loadApp(app) {
return async config => {
// 开始加载 app
try {
const doc = await http.get(appUrl);
const {
scripts,
links
} = parseHtml(doc, appUrl);
// 在这里loadcss
console.log('loader'); // 每个插件在这里只执行了一次 导致挂上css 卸载掉后,切换回来class不再被load了
links.map(url => {
return loadCss(name, url);
});
scripts.map(url => {
return loadJs(url);
});
console.log('loader');
} catch (e) {
error = e;
}
return new Promise((resolve, reject) => {
if (error) {
return reject(error);
}
sdk.onAppLoaded(name, e => {
store.commit(`app/app_success`, {
name,
data: e
});
// 重写插件卸载方法,卸载时删除插件
const unmount = e.unmount;
e.unmount = async (...args) => {
const res = await unmount(...args);
console.log(`${name} unmount--------------------`);
unLoadCss(name);
return res;
};
resolve(e);
});
});
}