Je souhaite importer un fichier CSS dans un composant de réaction.
J'ai essayé import disabledLink from "../../../public/styles/disabledLink";
mais j'obtiens l'erreur ci-dessous;
Module non trouvé: Erreur: Impossible de résoudre 'fichier' ou 'répertoire' ../../../public/styles/disabledLink dans c: \ Users \ User \ Documents \ 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
est l'emplacement du fichier CSS que j'essaie de charger.
Pour moi, il semble que l'importation ne recherche pas le bon chemin.
J'ai pensé que ../../../
cela commencerait à rechercher le chemin trois couches de dossiers ci-dessus.
C:\Users\User\Documents\pizza-app\client\src\components\ShoppingCartLink.js
est l'emplacement du fichier qui doit importer le fichier CSS.
Qu'est-ce que je fais mal et comment puis-je y remédier?
la source
Réponses:
Vous n'avez même pas besoin de le nommer si vous n'en avez pas besoin:
par exemple
import React from 'react'; import './App.css';
voir un exemple complet ici ( Construisez un compilateur JSX Live comme composant React ).
la source
Vous devez utiliser css-loader lors de la création d'un bundle avec webpack.
Installez-le:
Et ajoutez-le aux chargeurs dans vos configurations Webpack:
module.exports = { module: { loaders: [ { test: /\.css$/, loader: "style-loader!css-loader" }, // ... ] } };
Après cela, vous pourrez inclure des fichiers css dans js.
la source
Je suggérerais d'utiliser des modules CSS:
Réagir
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>; } }
Rendu du composant:
<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>
la source
import styles from "./disabledLink.css";
et obtenir l'erreur suivante: Module non trouvé: Erreur: Impossible de résoudre 'fichier' ou 'répertoire' ./disabledLink.css dans c: \ Users \ Basti Kluth \ Documents \ pizza-app \ client \ src \ components @ ./client/src/components/ShoppingCartLink.js 19: 20-49Ce qui suit importe un fichier CSS externe dans un composant React et génère les règles CSS dans le
<head />
du site Web.module.exports = { module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } }
import './path/to/file.css';
la source
rules
que valeur du tableau.Les solutions ci-dessus sont complètement modifiées et obsolètes. Si vous voulez utiliser des modules CSS (en supposant que vous ayez importé des chargeurs css) et que j'essaie de trouver une réponse à cela depuis si longtemps et je l'ai finalement fait. Le chargeur Webpack par défaut est assez différent dans la nouvelle version.
Dans votre webpack, vous devez trouver une partie commençant par cssRegex et la remplacer par ceci;
{ test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, modules: true, localIdentName: '[name]__[local]__[hash:base64:5]' }), }
la source
Les modules CSS vous permettent d'utiliser le même nom de classe CSS dans différents fichiers sans vous soucier des conflits de noms.
Button.module.css
autre-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>; } }
la source
Installez Style Loader et CSS Loader:
Configurer le Webpack
module: { loaders: [ { test: /\.css$/, loader: 'style-loader' }, { test: /\.css$/, loader: 'css-loader', query: { modules: true, localIdentName: '[name]__[local]___[hash:base64:5]' } } ] }
la source
Dans les cas où vous souhaitez simplement injecter des styles d'une feuille de style dans un composant sans les regrouper dans toute la feuille de style, je recommande https://github.com/glortho/styled-import . Par exemple:
const btnStyle = styledImport.react('../App.css', '.button') // btnStyle is now { color: 'blue' } or whatever other rules you have in `.button`.
NOTE: Je suis l'auteur de cette bibliothèque et je l'ai construite pour les cas où les importations massives de styles et de modules CSS ne sont pas la meilleure ou la plus viable des solutions.
la source
Vous pouvez également utiliser le module requis.
require('./componentName.css'); const React = require('react');
la source
L'utilisation d'extrait-css-chunks-webpack-plugin et de chargeur css-loader fonctionne pour moi, voir ci-dessous:
webpack.config.js Importer extract-css-chunks-webpack-plugin
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
webpack.config.js Ajoutez la règle css, extrayez d'abord les morceaux css puis le chargeur css css-loader les incorporera dans le document html, assurez-vous que css-loader et extract-css-chunks-webpack-plugin sont dans le package.json dev dépendances
rules: [ { test: /\.css$/, use: [ { loader: ExtractCssChunks.loader, }, 'css-loader', ], } ]
webpack.config.js Créer une instance du plugin
plugins: [ new ExtractCssChunks({ // Options similar to the same options in webpackOptions.output // both options are optional filename: '[name].css', chunkFilename: '[id].css' }) ]
Et maintenant, l'importation de css est possible Et maintenant, dans un fichier tsx comme index.tsx, je peux utiliser l'importation comme cette importation './Tree.css' où Tree.css contient des règles css comme
body { background: red; }
Mon application utilise du typographie et cela fonctionne pour moi, vérifiez mon dépôt pour la source: https://github.com/nickjohngray/staticbackeditor
la source
Vous pouvez importer votre
.css
fichier dans un.jsx
fichierVoici un exemple -
import Content from '../content/content.jsx';
la source