【发布时间】:2021-10-31 18:40:42
【问题描述】:
我们目前正在加载字体和其他几个像这样的全局样式:
import { createGlobalStyle } from 'styled-components';
export default createGlobalStyle`
@font-face {
font-family: 'Name';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/name/v12/iJWZBXyIfDnIV5PNhY1KTN7Z-Yh-B4iFU0U1Z4Y.woff2) format('woff2');
}
// more fonts..
}
在每个_app.tsx(来自 repo 中的每个项目)我们只是
import GlobalStyle from @our-company/ui;
// few other imports
const AppProviders = ({ children, messages, locale }: Props): JSX.Element => {
return (
<IntlProvider
locale={locale || 'en-GB'}
key={locale}
messages={messages[locale]}
defaultLocale="en-GB"
>
<GlobalStyle />
<DsThemeProvider
locale={locale}
>
{children}
</DsThemeProvider>
</IntlProvider>
);
};
但我们注意到,在单击复选框元素时,GlobalStyle 会导致不必要的字体重新加载(尝试将其放在 .css 中并加载它,然后再也不会发生)。
知道如何在不使用 styled-components 的情况下将此样式导出为 GlobalStyle 名称,这样我们就不必更改项目中所有应用程序中的所有 import 吗?
【问题讨论】:
-
您是否可以将 styled-components
createGlobalStyle替换为从 css 文件中导入字体配置的组件? -
不完全,我试图不重构存储库中的所有应用程序(有很多)
-
我的意思是将@our-company/ui 中的
GlobalStyle替换为从css 文件中导入其样式的组件,从而使其“静态”而不是每次都重新加载,我现在更清楚了吗? -
就是这样!感谢您用可以理解的语言表达出来????
-
嗯,好的,这样会有帮助吗?