CSS 类名未应用于 React 组件

问题描述 投票:0回答:6

感谢您的时间和帮助。我花了几个小时试图弄清楚这个问题似乎无法弄清楚。

我有这个反应组件:

import styles from './style.scss';

class ButtonComponent extends React.Component { 
  render() {
    return (
      <div className={styles.bunny}>
        hello world
      </div>
    );
  }
}

和 scss 文件:

.bunny {
  display: block;
  margin-top:50px;
  margin-bottom:55px;
  background-color: blue;
}

当我加载 html 时,div 没有类名,而我希望它是

<div class="bunny">

当我像这样将类名放入反应组件中时:

<div className="bunny"> 

然后我就可以在浏览器中看到className了。

我做错了什么?

提前非常感谢您。

javascript css reactjs webpack react-boilerplate
6个回答
2
投票

首先,您需要保证它的定义为:

console.log(styles)
我不确定您是否正确导入了 style.scss。


1
投票

您需要导入您的 scss,例如...

import './styles.scss';

Webpack 将负责捆绑您的样式,以便您可以将 className 作为字符串添加到组件上。

<div className="bunny">Hello World</div>

1
投票

也有类似的问题。原来我把样式文件命名不是news.module.scss,而是news.modules.scss。将“modules”重命名为“module”并导入文件后,className 开始工作


0
投票

解决这个问题的方法是将我的 scss 文件的名称从

style.scss
更改为
style.module.scss


0
投票

对我来说这是因为我使用commonjs的

require
来加载es模块。


0
投票

我遇到了不同的问题,这里没有提到,但这会导致相同的行为(类名只是没有添加到输出中):确保为类名使用有效的 css 标识符。

我用了蛇盒:

.spanning-grid-item {
  flex-grow: 1;
}

但我应该使用驼峰命名法:

.spanningGridItem {
  flex-grow: 1;
}
© www.soinside.com 2019 - 2024. All rights reserved.