css - 带有 React CSS 模块的 SASS 变量插值

标签 css reactjs sass react-css-modules

我在一个使用 React 的元素中工作,我们使用 SASS 编写样式,然后让 webpack 完成剩下的工作。

我们最近才开始使用 CSS 模块(准确地说是 babel-plugin-react-css-modules)并且过渡很顺利,除了一件事。

在 CSS 模块之前,我们使用的是 BEM 命名约定。我们经常会在组件的 .scss 文件中做这样的事情:

$block: '.box';

#{$block} {
    //css rules

    &#{$block}--modifier {
        //other rules
    }
}

本质上我们是在使用 SASS 的 variable interpolation能力,为了在 block 级元素的类名很大的情况下写得更少。

问题是,据我所知,对于这种情况,变量插值不再适用于 babel-plugin-react-css-modules

我收到类似

的错误
ERROR in ./src/index.jsx
Module build failed: Error: E:/Mitch/Workspace/Projects/testbed/src/index.jsx: Could not resolve the styleName 'box'.

我明白,有了 scoped CSS 规则,真的没有必要再写像 .box__list 这样的东西了,因为你可以简单地写 .list,因为它的作用域是组件,但出于好奇,是否可以让 SASS 的变量插值与 babel-plugin-react-css-modules 一起工作?

最佳答案

CSS 模块允许您使用局部范围内的类名称和动画名称。这是它的绝对功能。

他们还提供了一个 composes 关键字,因为它有助于在单个文件中维护自给自足的组件文件而不会重复。这与 SCSS @extends 类似,但有所不同。 你可以阅读它here

但是,如果你不想使用变量插值,你可以将 SCSS 预处理器添加到你的 webpack 配置中。 babel-plugin-react-css-modules 记录了相同的 here

但是,它只是 PostCSS,你可以添加任何 plugin以满足您的需求。 CSS 模块不关心。

关于css - 带有 React CSS 模块的 SASS 变量插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45894365/

相关文章:

css - 从 IE 10 中的文本框中删除 "X"(CSS 方法无效)

javascript - 使用路由器 "No overload matches this call"包装组件时出现 React-Router + Typescript 错误

html - 悬停时不显示标签

css - 如何在浏览器上即时编辑和测试 SCSS?

html - 使用 flex 自调整布局

css - 样式内嵌 css 的 svg

javascript - 无法在 React 组件中编写 HTML

javascript - 如何在页面第一次加载时打开 Popper

sass - scss液体混合中的变量

javascript - React - 导入非模块化 sass 文件返回空对象