35.1qiankun 子应用选择器失效问题

场景

在基于 qiankun 的微前端架构下开发时,子应用代码内的选择器全部失效。例如 getElementById() 等方法是获取不到子应用的元素的。而当子应用有获取 dom 的需求时(例如需要使用echarts),就会遇到这个问题。

产生原因

qiankun 微前端框架基于 shadow dom 的形式生成子应用,主、子应用共用一个 document ,而 shadow dom 内的元素是不被暴露的。

解决方法

思路:在主应用内找到 shadowRoot 的父元素,利用 .shadowRoot 属性,创建子应用自己的 document

实现:

// 找到主应用中 shadow root 的父元素,利用 .shadowRoot 属性获取沙箱即可
const microDocument = document.getElementById('父元素ID').firstChild.shadowRoot.

// 在需要使用选择器时,使用子应用自身的 microDocument 身上的选择器方法,就可以成功取到元素了
const myChart = echarts.init(microDocument.getElementById('echarts'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值