我使用react-new-window打开一个弹出窗口,这个弹出窗口包括一些动态的组件(一个切换,一个下拉菜单,等等),样式是styled-components。
一切都显示正常,直到我尝试与其中一个动态组件交互,它改变了状态(比如我将开关从off切换到on)。然后,结果是新组件状态的CSS类,通常生成并附加到<head>
,实际上附加到父窗口的<head>
,而不是弹出窗口。所以我的组件似乎失去了样式。
我在父窗口中也有同样的一堆组件。所以如果我在打开弹出窗口之前与它们交互,样式会像往常一样附加到<head>
,然后复制到弹出窗口,看起来都很好。
所以我想到了两种可能的解决方法:
1.我可以告诉styled-component以某种方式与新窗口对话,而不是父窗口。
1.作为一种变通方法,我可以通过编程方式预先生成所有样式(样式并不多)。
问题是我不知道如何做这两件事。任何想法欢迎!
3条答案
按热度按时间9bfwbjaz1#
如果有人需要,这里有一个功能组件的工作示例
kqqjbcuj2#
选项1解决方案实际上可以通过
styled-component
API实现:idfiyjo83#
使用
StyleSheetManager
给予我的性能真的很差,也许样式表在每次重新渲染时都被重新创建。我更喜欢简单地复制样式表,就像www.example.com中建议https://github.com/JakeGinnivan/react-popout/issues/15#issuecomment-527429574。