WebPack 为导入的样式表的类添加下划线,从而破坏反应组件的样式

Posted

技术标签:

【中文标题】WebPack 为导入的样式表的类添加下划线,从而破坏反应组件的样式【英文标题】:WebPack adding underscores to classes of an imported stylesheet breaking styles of react component 【发布时间】:2021-12-09 04:59:11 【问题描述】:

我在电子反应应用程序上遇到了一个奇怪的问题。 基本上当我导入 NMP 包的样式表时React-Quill 它是一个块样式的编辑器作为反应组件

按照说明,我将样式表导入为

import 'react-quill/dist/quill.snow.css'; // ES6

但没有实际样式应用于组件。我发现这是一个奇怪的问题,编译后的 CSS 出现在标题内的样式标签中为

.quill-snow__ql-container__WPmau 
  box-sizing: border-box;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 13px;
  height: 100%;
  margin: 0px;
  position: relative;

下划线不应该在那里,因此 CSS 没有正确应用

有趣的是,我确实有另一个类似的组件正在使用react-color-palette

并且其样式被正确导入

.rcp-body
display:-webkit-box;
display:-webkit-flex;
display:-ms-flexbox;
display:flex;
-webkit-flex-direction:column;
-ms-flex-direction:column;
flex-direction:column;
-webkit-align-items:center;
-webkit-box-align:center;
-ms-flex-align:center;
align-items:center;
-webkit-box-pack:center;
-webkit-justify-content:center;
-ms-flex-pack:center;
justify-content:center;
gap:20px;
width:100%;padding:20px;

这对我来说没有任何意义

这是我正在使用的代码

React-Quill 组件:

import React,  useState  from 'react';
import hljs from 'highlight.js';
import ReactQuill from 'react-quill';
import './RichTextEditor.css';

const modules = 
  // syntax: 
  //   highlight: (text: string) => hljs.highlightAuto(text).value,
  // ,
  toolbar: [
    [ header: [1, 2, 3, 4, 5, 6, false] ],
    ['bold', 'italic', 'underline', 'strike'],
    [ color: [] ],
    [ align: [] ],
    [ indent: '-1' ,  indent: '+1' ],
    [ list: 'ordered' ,  list: 'bullet' ],
    ['link', 'image', 'video'],
    ['code-block', 'blockquote'],
    [ script: 'sub' ,  script: 'super' ],
  ],
  clipboard: 
    matchVisual: false,
  ,
  syntax: false,
;

const textFormats = [
  'font',
  'header',
  'size',
  'bold',
  'italic',
  'underline',
  'strike',
  'blockquote',
  'background',
  'color',
  'script',
  'list',
  'bullet',
  'link',
  'image',
  'video',
  'clean',
  'code-block',
  'indent',
  'list',
  'align',
];

function RichTextEditor() 
  const [value, setValue] = useState('');

  hljs.configure(
    // useBR: false,
    languages: [
      'javascript',
      'java',
      'html',
      'xml',
      'sql',
      'typescript',
      'bash',
    ],
  );

  return (
    <ReactQuill
      value=value
      onChange=setValue
      placeholder="Write a new Note"
      modules=modules
      formats=textFormats
    />
  );


export default RichTextEditor;

网页包:

module.exports = 
  module: 
    rules: [
      
        test: /\.css$/,
        use: ['style-loader', 'css-loader'],
        exclude: /node_modules/,
      ,
      
        test: /\.css$/,
        use: ['to-string-loader', 'css-loader'],
        include: /node_modules/,
      ,
      // ...
    ],
  ,
;

我还创建了 package.json 的 Pastebin,作为它相当大的样板 Package.json

【问题讨论】:

【参考方案1】:

经过4天痛苦的调试,我想通了。

react-electron 样板文件有自己的 webpack 配置,这是先例。 如果有人使用这个样板electron-react-boilerplate webpack 配置位于 .erb/configs 下

【讨论】:

以上是关于WebPack 为导入的样式表的类添加下划线,从而破坏反应组件的样式的主要内容,如果未能解决你的问题,请参考以下文章

python:类5——Python 的类的下划线命名有什么不同?

react js上的样式导入(使用webpack)

为 webpack 导入样式文件时,Linter 显示“no-unused-vars”

使用 Qt 样式表的类实例的样式

使用 webpack 为捆绑代码添加样式

Webpack 多次导入相同的样式