Ich möchte eine CSS-Datei in eine Reaktionskomponente importieren.
Ich habe es versucht, import disabledLink from "../../../public/styles/disabledLink";
aber ich erhalte den folgenden Fehler.
Modul nicht gefunden: Fehler: 'Datei' oder 'Verzeichnis' kann nicht aufgelöst werden ../../../public/styles/disabledLink in c: \ Benutzer \ Benutzer \ Dokumente \ pizza-app \ client \ src \ components @. /client/src/components/ShoppingCartLink.js 19: 20-66 Hash: 2d281bb98fe0a961f7c4 Version: webpack 1.13.2
C:\Users\User\Documents\pizza-app\client\public\styles\disabledLink.css
ist der Speicherort der CSS-Datei, die ich laden möchte.
Mir scheint, dass der Import nicht den richtigen Weg sucht.
Ich dachte, ../../../
damit würde der Pfad drei Ordnerebenen oben nachschlagen.
C:\Users\User\Documents\pizza-app\client\src\components\ShoppingCartLink.js
ist der Speicherort der Datei, die die CSS-Datei importieren soll.
Was mache ich falsch und wie kann ich das beheben?
quelle
Antworten:
Sie müssen es nicht einmal benennen, wenn Sie nicht müssen:
z.B
import React from 'react'; import './App.css';
Ein vollständiges Beispiel finden Sie hier ( Erstellen eines JSX Live-Compilers als Reaktionskomponente ).
quelle
Sie müssen CSS-Loader verwenden, wenn Sie ein Bundle mit Webpack erstellen.
Es installieren:
Und fügen Sie es den Ladern in Ihren Webpack-Konfigurationen hinzu:
module.exports = { module: { loaders: [ { test: /\.css$/, loader: "style-loader!css-loader" }, // ... ] } };
Danach können Sie CSS-Dateien in js aufnehmen.
quelle
Ich würde vorschlagen, CSS-Module zu verwenden:
Reagieren
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>; } }
Rendern der Komponente:
<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>
quelle
import styles from "./disabledLink.css";
einzuschließen : und erhalte den folgenden Fehler: Modul nicht gefunden: Fehler: 'Datei' oder 'Verzeichnis' ./disabledLink.css kann nicht in c: \ Users \ Basti Kluth \ Documents \ pizza-app aufgelöst werden \ client \ src \ components @ ./client/src/components/ShoppingCartLink.js 19: 20-49Im Folgenden wird eine externe CSS-Datei in eine React-Komponente importiert und die CSS-Regeln auf
<head />
der Website ausgegeben.module.exports = { module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } }
import './path/to/file.css';
quelle
rules
Array-Wert hinzufügen .Die oben genannten Lösungen sind vollständig geändert und veraltet. Wenn Sie CSS-Module verwenden möchten (vorausgesetzt, Sie haben CSS-Loader importiert) und ich habe so lange versucht, eine Antwort darauf zu finden, und habe es schließlich getan. Der Standard-Webpack-Loader ist in der neuen Version ganz anders.
In Ihrem Webpack müssen Sie ein Teil finden, das mit cssRegex beginnt, und es durch dieses ersetzen.
{ test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, modules: true, localIdentName: '[name]__[local]__[hash:base64:5]' }), }
quelle
Mit CSS-Modulen können Sie denselben CSS-Klassennamen in verschiedenen Dateien verwenden, ohne sich Gedanken über Namenskonflikte machen zu müssen.
Button.module.css
another-stylesheet.css
.error { color: red; }
Button.js
import React, { Component } from 'react'; import styles from './Button.module.css'; // Import css modules stylesheet as styles import './another-stylesheet.css'; // Import regular stylesheet class Button extends Component { render() { // reference as a js object return <button className={styles.error}>Error Button</button>; } }
quelle
Installieren Sie Style Loader und CSS Loader:
Webpack konfigurieren
module: { loaders: [ { test: /\.css$/, loader: 'style-loader' }, { test: /\.css$/, loader: 'css-loader', query: { modules: true, localIdentName: '[name]__[local]___[hash:base64:5]' } } ] }
quelle
In Fällen, in denen Sie nur einige Stile aus einem Stylesheet in eine Komponente einfügen möchten, ohne das gesamte Stylesheet zu bündeln, empfehle ich https://github.com/glortho/styled-import . Zum Beispiel:
const btnStyle = styledImport.react('../App.css', '.button') // btnStyle is now { color: 'blue' } or whatever other rules you have in `.button`.
HINWEIS: Ich bin der Autor dieser Bibliothek und habe sie für Fälle erstellt, in denen Massenimporte von Stilen und CSS-Modulen nicht die beste oder praktikabelste Lösung sind.
quelle
Sie können auch das gewünschte Modul verwenden.
require('./componentName.css'); const React = require('react');
quelle
Die Verwendung von extract-css-chunks-webpack-plugin und css-loader loader funktioniert für mich, siehe unten:
webpack.config.js Importiere das Extrakt-CSS-Chunks-Webpack-Plugin
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
webpack.config.js Fügen Sie die CSS-Regel hinzu . Extrahieren Sie zuerst CSS-Chunks, dann bettet der CSS-Loader CSS-Loader sie in das HTML-Dokument ein. Stellen Sie sicher, dass sich CSS-Loader und Extract-CSS-Chunks-Webpack-Plugin in package.json dev befinden Abhängigkeiten
rules: [ { test: /\.css$/, use: [ { loader: ExtractCssChunks.loader, }, 'css-loader', ], } ]
webpack.config.js Instanz des Plugins erstellen
plugins: [ new ExtractCssChunks({ // Options similar to the same options in webpackOptions.output // both options are optional filename: '[name].css', chunkFilename: '[id].css' }) ]
Und jetzt ist das Importieren von CSS möglich. Und jetzt kann ich in einer tsx-Datei wie index.tsx den Import wie diesen Import './Tree.css' verwenden, wobei Tree.css CSS-Regeln wie enthält
body { background: red; }
Meine App verwendet Typoskript und dies funktioniert für mich. Überprüfen Sie mein Repo auf die Quelle: https://github.com/nickjohngray/staticbackeditor
quelle
Sie können Ihre
.css
Datei in eine.jsx
Datei importierenHier ist ein Beispiel -
import Content from '../content/content.jsx';
quelle