На React существуют тысячи шаблонов, и один из них - Create React App (CRA). С помощью этих шаблонов вы можете многое сделать. И в случае, если вы хотите сэкономить время, чтобы разработать новое веб-приложение с внешней библиотекой пользовательского интерфейса. Между тем вы предпочитаете использовать модуль CSS для настройки компонента, а CSS настройки хешируется как _3Cj0yJNB6Fk-9VD_CdCoyf. Хорошо, вот шаги для решения:

Пожалуйста, следуйте инструкциям CRA для настройки и создания шаблона здесь

1. Извлеките конфигурацию CRA с помощью команды

$ yarn eject
Are you sure you want to eject? This action is permanent. [y/N]
> y
Ejecting...
Ejected successfully!

2. Обновите конфигурацию CRA для модуля CSS.

Перейдите в файл «config / webpack.config.dev.js». Найдите раздел css-loader и замените его, как показано ниже:

{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
  },
}
//add more options like this
//with [name]_[local], it's easier to inspect the element and find //out the location of element in develop environment
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    modules: true,
    localIdentName: "[name]__[local]"
  },
}

Сделайте это с файлом «config / webpack.config.prod.js»

{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    minimize: true,
    sourceMap: true,
  },
}
//add more options like this
{
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    modules: true,
    minimize: true,
    sourceMap: true,
   },
},

Повторите код в файле «src / App.css», как показано ниже.

.app {
  text-align: center;
}
.logo {
  animation: spin infinite 20s linear;
  height: 80px;
}
.header {
  background-color: #222;
  height: 150px;
  padding: 20px;
  color: white;
}
.title {
  font-size: 1.5em;
}
.intro {
  font-size: large;
}
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

Замените файлом «src / App.js».

import React, { Component } from 'react';
import logo from './logo.svg';
import styles from './App.css';
class App extends Component {
 render() {
  return (
   <div className={styles.app}>
    <header className={styles.header}>
     <img src={logo} className={styles.logo} alt="logo" />
     <h1 className={styles.title}>Welcome to React</h1>
    </header>
    <p className={styles.intro}>
     To get started, edit <code>src/App.js</code> and save to reload.
    </p>
   </div>
  );
 }
}
export default App;

Перезапустите веб-приложение с помощью «yarn start», осмотрите элемент, и вы увидите что-то, как показано ниже:

Это означает, что модуль css хорошо работает с вашим веб-приложением.

3. Добавьте внешнюю библиотеку пользовательского интерфейса.

В этом руководстве я использую Semantic-UI как внешнюю библиотеку пользовательского интерфейса. Вы можете выбрать любую библиотеку по своему усмотрению. Запустите, как показано ниже, чтобы добавить semantic-ui-css и semantic-ui-react к вашему проекту.

$ yarn add semantic-ui-css semantic-ui-react

Импортировать библиотеку css в файл «src / index.js»

import 'semantic-ui-css/semantic.min.css';

К сожалению, что-то идет не так, где находится переменная, которая повторно представлена ​​для этой библиотеки css, и если вы используете какой-либо компонент из semantic-ui, он не работает. Фактически, он вам больше не нужен, как показано ниже:

Откройте файл config / webpack.config.dev.js и обновите

{
  test: /\.css$/,
  exclude: [/src/],
  use: [
    require.resolve('style-loader'),
    {
      loader: require.resolve('css-loader'),
      options: {
        importLoaders: 1,
      }
    }
  ]
},
{
  test: /\.css$/,
  exclude: [/node_modules/],
  use: [
  require.resolve('style-loader'),
  {
  loader: require.resolve('css-loader'),
  options: {
    importLoaders: 1,
    modules: true,
    localIdentName: "[name]__[local]"
  },
.
.
.

Сделайте то же самое с config / webpack.config.prod.js.

{
  test: /\.css$/,
  exclude: [/src/],
  loader: ExtractTextPlugin.extract(
    Object.assign({
      fallback: {
      loader: require.resolve('style-loader'),
      options: {
        hmr: false,
      },
    },
      use: [{
        loader: require.resolve('css-loader'),
        options: {
          importLoaders: 1,
          minimize: true,
          sourceMap: shouldUseSourceMap,
        },
      }]
    })
  )
},
{
  test: /\.css$/,
  exclude: [/node_modules/],
  loader: ExtractTextPlugin.extract(
    Object.assign(
.
.
.

Остановите сервер с помощью Ctrl + C и запустите снова с помощью «старта пряжи»
Теперь вы можете использовать css из Semantic CSS в сочетании с модулем CSS. Например, выпадающий компонент из Semantic

<div className="ui selection dropdown">
  <input type="hidden" name="gender" />
  <i className="dropdown icon" />
  <div className="default text">Gender</div>
  <div className="menu">
    <div className="item" data-value="1">Male</div>
    <div className="item" data-value="0">Female</div>
  </div>
</div>

Если вы хотите настроить CSS, выполните следующие действия: styles.custom - это ваш CSS из пользовательского файла CSS.

<div className={`ui selection dropdown ${styles.custom}`}>
  <input type="hidden" name="gender" />
  <i className="dropdown icon" />
  <div className="default text">Gender</div>
  <div className="menu">
    <div className="item" data-value="1">Male</div>
    <div className="item" data-value="0">Female</div>
  </div>
</div>

Вы сделали

Отсюда вы можете одновременно использовать как модуль css, так и внешний css. Это поможет вам сэкономить много времени на воссоздании нового компонента. Удачи :)
Если есть вопросы. Пожалуйста, оставьте это в разделе комментариев. Мир !