ant-design / antd-style

css-in-js library with antd v5 token system

Home Page:https://ant-design.github.io/antd-style/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

Enivia opened this issue · comments

🐛 bug 描述

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

📷 复现步骤

  • 创建 qiankun 应用,创建子应用,使用 StyleProvider 并且不设置 container 值
  • 打开子应用
  • 检查代码,发现 antd 样式加载在 qiankun-head 末尾

原因

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

🏞 期望结果

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

💻 复现代码

© 版本信息

  • antd-style 版本: 3.5.0
  • 浏览器环境 Chrome 118
  • 开发环境 Windows

🚑 其他信息

这个需要修改什么么?

这个需要修改什么么?

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

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

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

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

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

这里不是说了吗
image

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

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

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

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

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

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

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

不开启 speedy 无法解决吗?

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

不开启 speedy 无法解决吗?

估计是的