Saya ingin mengimpor file CSS menjadi komponen react.
Saya sudah mencoba import disabledLink from "../../../public/styles/disabledLink";
tetapi saya mendapatkan kesalahan di bawah ini;
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan 'file' atau 'direktori' ../../../public/styles/disabledLink di c: \ Users \ User \ Documents \ pizza-app \ client \ src \ components @. /client/src/components/ShoppingCartLink.js 19: 20-66 Hash: 2d281bb98fe0a961f7c4 Versi: webpack 1.13.2
C:\Users\User\Documents\pizza-app\client\public\styles\disabledLink.css
adalah lokasi file CSS yang saya coba muat.
Bagi saya, sepertinya import tidak mencari jalur yang benar.
Saya pikir dengan ../../../
itu akan mulai mencari jalur tiga lapisan folder di atas.
C:\Users\User\Documents\pizza-app\client\src\components\ShoppingCartLink.js
adalah lokasi file yang harus mengimpor file CSS.
Apa yang saya lakukan salah dan bagaimana cara memperbaikinya?
sumber
Jawaban:
Anda bahkan tidak perlu memberi nama jika tidak perlu:
misalnya
import React from 'react'; import './App.css';
lihat contoh lengkapnya di sini ( Membangun JSX Live Compiler sebagai Komponen React ).
sumber
Anda perlu menggunakan css-loader saat membuat bundel dengan webpack.
Instal itu:
Dan tambahkan ke pemuat di konfigurasi webpack Anda:
module.exports = { module: { loaders: [ { test: /\.css$/, loader: "style-loader!css-loader" }, // ... ] } };
Setelah ini, Anda dapat memasukkan file css di js.
sumber
Saya menyarankan menggunakan Modul CSS:
Reaksi
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>; } }
Merender Komponen:
<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>
sumber
import styles from "./disabledLink.css";
dan mendapatkan kesalahan berikut: Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan 'file' atau 'direktori' ./disabledLink.css di c: \ Users \ Basti Kluth \ Documents \ pizza-app \ client \ src \ components @ ./client/src/components/ShoppingCartLink.js 19: 20-49Yang berikut mengimpor file CSS eksternal dalam komponen React dan mengeluarkan aturan CSS di
<head />
situs web.module.exports = { module: { rules: [ { test: /\.css$/, use: [ 'style-loader', 'css-loader' ] } ] } }
import './path/to/file.css';
sumber
rules
nilai array.Solusi di atas benar-benar berubah dan tidak digunakan lagi. Jika Anda ingin menggunakan modul CSS (dengan asumsi Anda mengimpor css-loader) dan saya telah mencoba menemukan jawabannya untuk waktu yang lama dan akhirnya melakukannya. Loader webpack default sangat berbeda di versi baru.
Di webpack Anda, Anda perlu mencari bagian yang dimulai dengan cssRegex dan menggantinya dengan ini;
{ test: cssRegex, exclude: cssModuleRegex, use: getStyleLoaders({ importLoaders: 1, modules: true, localIdentName: '[name]__[local]__[hash:base64:5]' }), }
sumber
Modul CSS memungkinkan Anda menggunakan nama kelas CSS yang sama di file yang berbeda tanpa khawatir tentang bentrokan penamaan.
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>; } }
sumber
Instal Style Loader dan CSS Loader:
Konfigurasikan webpack
module: { loaders: [ { test: /\.css$/, loader: 'style-loader' }, { test: /\.css$/, loader: 'css-loader', query: { modules: true, localIdentName: '[name]__[local]___[hash:base64:5]' } } ] }
sumber
Jika Anda hanya ingin memasukkan beberapa gaya dari stylesheet ke dalam komponen tanpa memaketkan seluruh stylesheet, saya sarankan https://github.com/glortho/styled-import . Sebagai contoh:
const btnStyle = styledImport.react('../App.css', '.button') // btnStyle is now { color: 'blue' } or whatever other rules you have in `.button`.
CATATAN: Saya adalah penulis lib ini, dan saya membuatnya untuk kasus-kasus di mana impor massal dari gaya dan modul CSS bukanlah solusi terbaik atau paling layak.
sumber
Anda juga dapat menggunakan modul yang diperlukan.
require('./componentName.css'); const React = require('react');
sumber
Menggunakan extract-css-chunks-webpack-plugin dan css-loader loader berfungsi untuk saya, lihat di bawah:
webpack.config.js Impor ekstrak-css-chunks-webpack-plugin
const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');
webpack.config.js Tambahkan aturan css , Ekstrak potongan css terlebih dahulu kemudian css loader css-loader akan di-embed ke dalam dokumen html, pastikan css-loader dan ekstrak-css-chunks-webpack-plugin ada di package.json dev ketergantungan
rules: [ { test: /\.css$/, use: [ { loader: ExtractCssChunks.loader, }, 'css-loader', ], } ]
webpack.config.js Buatlah contoh dari plugin
plugins: [ new ExtractCssChunks({ // Options similar to the same options in webpackOptions.output // both options are optional filename: '[name].css', chunkFilename: '[id].css' }) ]
Dan sekarang mengimpor css dimungkinkan Dan sekarang di file tsx seperti index.tsx saya dapat menggunakan impor seperti ini import './Tree.css' di mana Tree.css berisi aturan css seperti
body { background: red; }
Aplikasi saya menggunakan skrip ketikan dan ini berfungsi untuk saya, periksa repo saya untuk sumbernya: https://github.com/nickjohngray/staticbackeditor
sumber
Anda dapat mengimpor
.css
file Anda dalam.jsx
fileIni contohnya -
import Content from '../content/content.jsx';
sumber