179 votes

Comment importer un fichier CSS dans un composant React

Je veux importer un fichier CSS dans un composant react.

J'ai essayé import disabledLink from "../../../public/styles/disabledLink"; mais je reçois l'erreur ci-dessous ;

Module non trouvé : Erreur : Cannot resolve 'file' or 'directory' ../../../public/styles/disabledLink in 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'import ne recherche pas le bon chemin.

J'ai pensé avec ../../../ il commencera à chercher le chemin trois couches de dossiers au-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 le réparer ?

0 votes

Hey quoi de neuf :D, il semble qu'il n'y ait que deux dossiers en haut (components & src).

0 votes

Hé, tu as raison mais ça ne marche toujours pas. J'ai remarqué que je ne peux pas utiliser l'importation, car je ne peux pas utiliser l'exportation dans un fichier CSS.

0 votes

En utilisant cette méthode stackoverflow.com/questions/39926493/

267voto

code4jhon Points 641

Vous n'êtes même pas obligé de lui donner un nom si vous n'en avez pas besoin :

par exemple

import React from 'react';
import './App.css';

voir un exemple complet ici ( Construire un compilateur JSX Live en tant que composant React ).

12 votes

Cela ne fonctionne pas pour moi, lorsque j'essaie d'exécuter mocha avec le registre babel, j'obtiens... I:\....css :1 (function (exports, require, module, __filename, __dirname) { .filter-bg { ^ SyntaxError : Unxpected token .

3 votes

Ou, utiliser react-helmet et injecter la css (si c'est une url) dans la balise <head>.

67voto

Alexandr Lazarev Points 8611

Vous devez utiliser css-loader lors de la création de bundle avec webpack.

Installez-le :

npm install css-loader --save-dev

Et ajoutez-le aux chargeurs dans vos configurations webpack :

module.exports = {
  module: {
    loaders: [
      { test: /\.css$/, loader: "style-loader!css-loader" },
      // ...
    ]
  }
};

Après cela, vous serez en mesure d'inclure des fichiers css dans les js.

3 votes

Je ne suis pas autorisé à importer un autre module dans ce projet. Existe-t-il une autre solution fonctionnant uniquement avec reactjs ou native js ?

0 votes

Donc je pense que je dois utiliser quelque chose comme ça : HTMLElement.style

0 votes

C'est un peu moche. Pourquoi n'avez-vous pas le droit d'ajouter des modifications dans l'immeuble du faisceau ?

52voto

Mihir Patel Points 893

Je vous suggère d'utiliser les modules CSS :

React

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 de la composante :

<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>

0 votes

J'ajouterais la partie 1 comme réponse ci-dessous. Et vous pouvez suivre ma réponse pour tester votre composant.

4 votes

J'ai essayé ça et ça ne marche pas. J'ai essayé de l'inclure comme ceci : import styles from "./disabledLink.css"; et obtenir l'erreur suivante : Module non trouvé : Error : Cannot resolve 'file' or 'directory' ./disabledLink.css in c : \Users\Basti Kluth \Documents\pizza -app \client\src\components @ ./client/src/components/ShoppingCartLink.js 19:20-49

2 votes

Les modules css doivent être installés séparément, github.com/css-modules/css-modules

28voto

Webars Points 1727

L'exemple suivant importe un fichier CSS externe dans un composant React et produit les règles CSS dans le fichier d'aide. <head /> du site web.

  1. Installer Chargeur de style y Chargeur CSS :

    npm install --save-dev style-loader npm install --save-dev css-loader

  2. Dans webpack.config.js :

    module.exports = { module: { rules: [ { test: /.css$/, use: [ 'style-loader', 'css-loader' ] } ] } }

  3. Dans un fichier de composants :

    import './path/to/file.css';

1 votes

Et j'utilise babel pour exécuter watcher. Peut-être qu'il ne voit pas du tout dans le fichier webpack.config.js.

0 votes

Avez-vous installé css-loader ? Je ne vois pas non plus votre webpack.config.js.

1 votes

Vous pouvez ajouter d'autres règles de module au format objet comme suit rules la valeur du tableau.

1voto

Bertwin Romero Points 21
  1. Installez Style Loader et CSS Loader :

    npm install --save-dev style-loader
    npm install --save-dev css-loader
  2. Configurer webpack

    module: {
            loaders: [
                {
                    test: /\.css$/,
                    loader: 'style-loader'
                }, {
                    test: /\.css$/,
                    loader: 'css-loader',
                    query: {
                        modules: true,
                        localIdentName: '[name]__[local]___[hash:base64:5]'
                    }
                }
            ]
        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X