We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
子应用使用了styled-components的CSSOM模式,切换到其他应用再切换回来,某些情况下会样式丢失
https://github.com/Aeero/qiankun-issue/tree/bug/styled-components-cssom
step 1: yarn examples:install & yarn examples:start
step 2: 打开url: http://localhost:7099/react16-2
step 3: 页面上有一个红色的div 此时动态生成的styled-components 样式节点 cssRules.length === 1
step 4: 点击"click me",页面上生成了一个绿色的div 此时动态生成的styled-components 样式节点 cssRules.length === 2
step 3: 页面上有一个红色的div,此时动态生成的styled-components 样式节点 cssRules.length === 1
step 4: 切换到 url: http://localhost:7099/react16(点击左侧导航)
step 5: 切换回 url: url: http://localhost:7099/react16-2(点击左侧导航)
step 6: 点击“click me” 此时绿色div样式丢失(此时动态生成的styled-components 样式节点 cssRules.length依旧是1,也就是后续生成的新样式没有正确的插入到合适的位置)
styled-components对CSSOM模式的处理方式
可以看到,其实并没有保存style节点的引用,保存的是 style.sheet
** 然后style.sheet有点不一样,当html里删除掉了某个style节点,该节点的sheet属性会自动被删除,即使重新添加,sheet的引用和之前的也不一样了 **
qiankun对子应用切换会删除style tag,然后rebuild时会重新append style tag,styled-components保存的sheet引用就丢失了,所以就导致新样式挂载失败
#617
The text was updated successfully, but these errors were encountered:
我也碰到过这个问题,初步怀疑是qiankun框架link挂载样式文件丢失导致的,具体原因没有继续往下定位了,但是有个解决方案,可以将link挂载的样式文件转为用style组装的方式,这样就不会丢失了。
Sorry, something went wrong.
umijs 最新版本 + styled-component 最新版本同样能遇到,官方就这样一直拖着不解决么?
Successfully merging a pull request may close this issue.
What happens?
子应用使用了styled-components的CSSOM模式,切换到其他应用再切换回来,某些情况下会样式丢失
Mini Showcase Repository(REQUIRED)
https://github.com/Aeero/qiankun-issue/tree/bug/styled-components-cssom
How To Reproduce
正常case
step 1: yarn examples:install & yarn examples:start
step 2: 打开url: http://localhost:7099/react16-2
step 3: 页面上有一个红色的div
此时动态生成的styled-components 样式节点 cssRules.length === 1
step 4: 点击"click me",页面上生成了一个绿色的div
此时动态生成的styled-components 样式节点 cssRules.length === 2
异常case(step1 ~ 3 同上)
step 1: yarn examples:install & yarn examples:start
step 2: 打开url: http://localhost:7099/react16-2
step 3: 页面上有一个红色的div,此时动态生成的styled-components 样式节点 cssRules.length === 1
step 4: 切换到 url: http://localhost:7099/react16(点击左侧导航)
step 5: 切换回 url: url: http://localhost:7099/react16-2(点击左侧导航)
step 6: 点击“click me”
此时绿色div样式丢失(此时动态生成的styled-components 样式节点 cssRules.length依旧是1,也就是后续生成的新样式没有正确的插入到合适的位置)
问题定位
styled-components对CSSOM模式的处理方式
可以看到,其实并没有保存style节点的引用,保存的是 style.sheet
** 然后style.sheet有点不一样,当html里删除掉了某个style节点,该节点的sheet属性会自动被删除,即使重新添加,sheet的引用和之前的也不一样了 **
qiankun对子应用切换会删除style tag,然后rebuild时会重新append style tag,styled-components保存的sheet引用就丢失了,所以就导致新样式挂载失败
refs
#617
Context
The text was updated successfully, but these errors were encountered: