Reactjs在运行时加载SCSS

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Reactjs在运行时加载SCSS相关的知识,希望对你有一定的参考价值。

我有两个scss文件,其中包含我站点中不同主题的变量。我希望能够通过提供这样的url参数来更改主题:

let _url = new URL(window.location.href);
let _theme = _url.searchParams.get("theme");

switch (_theme) {
  case 'light': import('./styles/config-light.scss'); break;
  default: import('./styles/config-default.scss');
}

当我在开发中运行站点时,但在构建代码之前将站点推送到生产站点之前,这非常有效。上面的switch语句的问题是文件不包含在构建中。

scss配置文件包含如下变量:

$section-background: #373838;
$section-border: #212121;
$toolbar-border: #212121;
$output-background: #313131;

每个配置文件对于不同的主题都有不同的值,这允许我不复制css代码,只复制值。

实现这种允许我在运行时加载和更改不同scss文件的解决方案的最佳方法是什么? TIA!

答案

正如@Shanon Jackson提到的那样,两个文件都将被导入。

我建议查看Styled components,它提供可以在运行时控制的主题。

以上是关于Reactjs在运行时加载SCSS的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行时加载的 jsp 中包含 html 片段?

ReactJS:为啥 .scss 没有正确引用 id 中的 className?

Vue scss 样式加载因 mocamapck 失败

在 ReactJs 中单击按钮时加载新组件?

使用 Webpack 4 和 react js 在 scss 中导入字体或图像文件时出错

当片段视图加载是异步任务的一部分时,如何在片段加载之前显示进度条?