Ответ 1
Вам даже не нужно называть его, если вам не нужно:
например,
import React from 'react';
import './App.css';
см. полный пример здесь (Создайте JSX Live Compiler в качестве компонента React).
Как говорится в названии, я хочу импортировать файл CSS в компонент реакции. Я пробовал следующее:
import disabledLink from "../../../public/styles/disabledLink";
Но ошибка показывает мне это:
Модуль не найден: Ошибка: не удается разрешить "файл" или "каталог".. /../../public/styles/disabledLink в c:\Users\User\Documents\pizza-app\client\src\компоненты @./client/src/components/ShoppingCartLink.js 19: 20-66
Хэш: 2d281bb98fe0a961f7c4
Версия: webpack 1.13.2
Файл находится по этому пути:
C:\Users\User\Documents\пицца-приложение\клиент\Public\Стили\disabledLink.css
Мне кажется, что импорт не ищет правильный путь. Я думал, что с помощью ../../../
он начнет искать три слоя выше.
Файл, который должен импортировать файл CSS, находится здесь:
C:\Users\User\Documents\пицца-приложение\клиент\\ SRC компоненты \ShoppingCartLink.js
Спасибо за любой вклад!
Вам даже не нужно называть его, если вам не нужно:
например,
import React from 'react';
import './App.css';
см. полный пример здесь (Создайте JSX Live Compiler в качестве компонента React).
Вам нужно использовать css-loader при создании пакета с помощью wepback.
Установите его:
npm install css-loader --save-dev
И добавьте его в загрузчики в своих конфигурациях webpack:
module.exports = {
module: {
loaders: [
{ test: /\.css$/, loader: "style-loader!css-loader" },
// ...
]
}
};
После этого вы сможете включить css файлы в js.
Я бы предложил использовать CSS-модули:
Реагировать
import React from 'react';
import styles from './table.css';
export default class Table extends React.Component {
render () {
return <div className={styles.table}>
<div className={styles.row}>
<div className={styles.cell}>A0</div>
<div className={styles.cell}>B0</div>
</div>
</div>;
}
}
Предоставление компонента:
<div class="table__table___32osj">
<div class="table__row___2w27N">
<div class="table__cell___2w27N">A0</div>
<div class="table__cell___1oVw5">B0</div>
</div>
</div>
Следующий импортирует внешний файл CSS в компонент React и выводит правила CSS в <head/>
веб-сайта.
npm install --save-dev style-loader
npm install --save-dev css-loader
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [ 'style-loader', 'css-loader' ]
}
]
}
}
import './path/to/file.css';
Установить загрузчик стиля и загрузчик CSS: npm install --save-dev style-loader npm install --save-dev css-loader
Настроить webpack
module: {loaders: [{test:/.css$/, loader: 'style-loader'}, {test:/.css$/, loader: 'css-loader', query: {modules: true, localIdentName: '[name] [local] _ [hash: base64: 5]'}}]}
В тех случаях, когда вы просто хотите внедрить некоторые стили из таблицы стилей в компонент без объединения во всю таблицу стилей, я рекомендую https://github.com/glortho/styled-import. Например:
const btnStyle = styledImport.react('../App.css', '.button')
// btnStyle is now { color: 'blue' } or whatever other rules you have in '.button'.
ПРИМЕЧАНИЕ. Я являюсь автором этой библиотеки и создавал ее для случаев, когда массовый импорт стилей и модулей CSS не является лучшим или наиболее жизнеспособным решением.
Как применить стили из нескольких файлов .css? У меня есть файл - body.css, и я импортировал так же, как показано ниже: импортировать стили из '../styles/body.css'; Но когда я пытаюсь применить стиль, определенный в css, для реагирования на компонент, он не работает следующим образом: <div className={styles.box}>
[.box - это стиль класса, определенный в .css]. Он работает следующим образом: <div className="box">
Как импортировать файл CSS-модулей в JS файл в React JS Я попробовал этот вариант, "Импорт стилей из"../components/Color.module.css "; Но это не сработало.
Вы также можете использовать необходимый модуль.
require('./componentName.css');
const React = require('react');
Указанные выше решения полностью изменены и устарели. Если вы хотите использовать модули css (при условии, что вы импортировали css-загрузчики), и я пытался найти ответ на этот вопрос в течение столь длительного времени, и, наконец, сделал это. Загрузчик веб-пакетов по умолчанию в новой версии сильно отличается.
в вашем веб-пакете вам нужно найти деталь, начинающуюся с cssRegex, и заменить ее на эту;
{
test: cssRegex,
exclude: cssModuleRegex,
use: getStyleLoaders({
importLoaders: 1,
modules: true,
localIdentName: '[name]__[local]__[hash:base64:5]'
}),
}