CSS 模块在 React 16.13.1 中不工作

CSS module is not working in react 16.13.1

我想在 React JS 中设置组件样式。我尝试了几种方法来做到这一点。当我尝试创建 CSS object 并将其应用于同一 JS 文件中的组件时,它正在运行。但是当我尝试从外部 CSS 文件应用 CSS 并将其导入 JS 文件时,它不起作用。我还尝试将该文件另存为 filename.module.css。但这对我没有帮助。

已安装的节点模块列表及其版本如下。

> @material-ui/core@4.9.11
> @material-ui/icons@4.9.1
> firebase@7.14.1
> react@16.13.1
> react-dom@16.13.1
> react-router-dom@5.1.2
> react-scripts@3.4.1

react-script 模块的 webpack.config.js 文件中,我找到以下代码:

const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;

所以我想我的 React 项目支持 CSS 文件以及 SCSS 和 SASS 文件。我理解正确吗?

header.module.css 文件:

.heading {
    color: '#3592EF';
    font-weight: '600';
    letter-spacing: '2px';
}
.navButton {
    color: '#444';
    font-size: '16px';
    padding: '4px 8px';
    margin: 'auto';
    margin-right: '15px';
}

Header.js 文件:

import React from 'react';
import { Button } from '@material-ui/core';
import styles from './header.module.css';

export default class Header extends React.Component {
    render() {
        return (
            <div>
                <span className={styles.headling}>Heading element</span>
                <Button className={styles.navButton}>Home</Button>
                <Button className={styles.navButton}>About</Button>
            </div>
        );
    }
}

输出带有标题元素和“主页”、“关于”按钮。但是没有 CSS 样式。

我该如何解决这个问题?

谢谢。

一般自定义组件不接受className prop,如果它没有传播到组件内部的话。 查看 material ui 反应组件 Button 文档,该组件不能有 className 属性。 https://material-ui.com/components/buttons/ 这意味着,您不能使用它。为了说服自己,请尝试使用通用 html <button>,它会起作用,你看。 编辑:语法

首先:打开您的终端并 运行 "npm install css-loader style-loader --save-dev" 这些加载器使 Webpack 能够捆绑 CSS 个文件 第二:在你的 webpack.config.js 文件中,添加用于解释 CSS 文件的新加载器:

module.exports = {
  ...
  module: {
    rules: [
      ...
      *///

 {
         test: /\.css$/i,
         exclude: /node_modules/,
         use: [
           'style-loader',
           {
             loader: 'css-loader',
             options: {
               modules: true,
             },
           },
         ],
       },

   *////
    ],
  },
  ...
};

CSS 模块包含在 react 中 您所要做的就是构建一个具有正确名称的文件,例如“example.module.css”,如果它位于同一文件夹中,则使用正确的路径导入它`import tst from 'example.module.css' 或它所在的任何路径,您可以用您喜欢的任何名称替换“tst”。 然后你可以在 className 中使用它,比如

<button className={tst.buttonPrimary}>Submit /button>

此视频可以为您提供更多帮助: https://www.youtube.com/watch?v=Udf951dyTdU