ant-design / antd-style

css-in-js library with antd v5 token system
https://ant-design.github.io/antd-style/
MIT License
187 stars 29 forks source link

🐛[BUG] 在 qiankun 中使用 StyleProvider 会导致 antd 组件样式插入位置不正确 #120

Closed Enivia closed 6 months ago

Enivia commented 8 months ago

🐛 bug 描述

在 qiankun 中使用 StyleProvider 会导致 antd 组件样式插入位置不正确。antd 样式未加载在 qiankun-head 头部,而是插入其末尾。

📷 复现步骤

原因

antd-style StyleProvider 将 cssinjs StyleProvider 中的 container 的值设置为了默认 headrc-uitl 在插入动态样式时,会先查找 container 即 head 中已存在的 antd 样式。 若已存在样式,就会将新的样式追加在已存在样式之前(这里的插入操作被 qiankun 代理,最终结果是添加到了子应用 head 末尾),否则插入到子应用 head 头部

🏞 期望结果

antd 样式加载在子应用 head 头部

💻 复现代码

© 版本信息

🚑 其他信息

arvinxx commented 8 months ago

这个需要修改什么么?

Enivia commented 8 months ago

这个需要修改什么么?

需要antd 样式插入位置正确。

这种差异会导致单独启动子应用和在 qiankun 中启动子应用时样式加载顺序不一样,可能会出现样式问题。

arvinxx commented 8 months ago

需要antd 样式插入位置正确。

我明白你的意思,现在是什么原因导致插入不正确,这个清楚吗?

Enivia commented 8 months ago

我明白你的意思,现在是什么原因导致插入不正确,这个清楚吗?

这里不是说了吗 image

arvinxx commented 8 months ago

antd-style StyleProvider 将 cssinjs StyleProvider 中的 container 的值设置为了默认 head

我的意思是,在这个原因基础上,antd-style 里面需要修改什么,可以解决你现在遇到的问题?

Enivia commented 8 months ago

我的意思是,在这个原因基础上,antd-style 里面需要修改什么,可以解决你现在遇到的问题?

container 不设置默认为 head 可以解决一部分问题。这个不应该你们商量解决方案吗?rc-util 的判断插入位置的逻辑和 qiankun 代理 insertBefore 的逻辑都很诡异。。。

arvinxx commented 8 months ago

我先去问问相关负责同学吧。可能他们解了 antd-style 就不用动

MadCcc commented 8 months ago

升级 qiankun 到最新版本(2.10.8 以上),并开启 speedy 模式

Enivia commented 8 months ago

升级 qiankun 到最新版本(2.10.8 以上),并开启 speedy 模式

不开启 speedy 无法解决吗?

arvinxx commented 8 months ago

升级 qiankun 到最新版本(2.10.8 以上),并开启 speedy 模式

不开启 speedy 无法解决吗?

估计是的