कैसे एक रिएक्टर घटक में एक सीएसएस फ़ाइल आयात करने के लिए


98

मैं एक सीएसएस फ़ाइल को एक प्रतिक्रिया घटक में आयात करना चाहता हूं।

मैंने कोशिश की है, import disabledLink from "../../../public/styles/disabledLink";लेकिन मुझे नीचे त्रुटि मिली;

मॉड्यूल नहीं मिला: त्रुटि: 'फ़ाइल' या 'निर्देशिका' को हल नहीं कर सकता .. ..///public/styles/disabledLink में c: \ Users \ User \ Documents \ Pizza-app \ client \ src \ Components @। /client/src/compords/ShoppingCartLink.js 19: 20-66 हैश: 2d281bb98fe0a961f7c4 संस्करण: वेबपैक 1.13.2

C:\Users\User\Documents\pizza-app\client\public\styles\disabledLink.css सीएसएस फ़ाइल का स्थान है जिसे मैं लोड करने की कोशिश कर रहा हूं।

मेरे लिए ऐसा लगता है कि आयात सही रास्ता नहीं देख रहा है।

मैंने सोचा था कि ../../../यह ऊपर तीन फ़ोल्डर परतों को देखने के लिए शुरू होगा।

C:\Users\User\Documents\pizza-app\client\src\components\ShoppingCartLink.js उस फ़ाइल का स्थान है जिसे CSS फ़ाइल को आयात करना चाहिए।

मैं क्या गलत कर रहा हूं और मैं इसे कैसे ठीक कर सकता हूं?


अरे क्या हो रहा है: डी, ​​यह ऊपर (घटक और src) केवल दो फ़ोल्डर की तरह दिखता है
Steeve Pitis

अरे, आप सही हैं लेकिन यह अभी भी काम नहीं कर रहा है। मैंने देखा कि मैं आयात का उपयोग नहीं कर सकता, क्योंकि मैं एक सीएसएस फ़ाइल के भीतर निर्यात का उपयोग नहीं कर सकता
vant


मुझे त्रुटि मिल रही है -> @media केवल स्क्रीन और (न्यूनतम-चौड़ाई: 320px) और (अधिकतम-चौड़ाई: 640px) {^ सिंटैक्सError: मॉड्यूल में अमान्य या अप्रत्याशित टोकन। आंतरिक / मॉड्यूल / आंतरिक / मॉड्यूल /jj / loader.js: 723 : 23)
सदानंद

जवाबों:


159

अगर आपको इसकी आवश्यकता नहीं है, तो आपको इसका नाम भी नहीं देना होगा:

जैसे

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

यहां एक पूरा उदाहरण देखें ( एक प्रतिक्रिया घटक के रूप में एक JSX लाइव कंपाइलर बनाएँ )।


5
मेरे लिए काम नहीं करता है, जब मैं कोलाहल के साथ मोचा चलाने की कोशिश करता हूं तो मुझे मिलता है ... I: \ .... css: 1 (फ़ंक्शन (निर्यात, आवश्यकता, मॉड्यूल, __filename, __dirname) {.filter-bg {^। SyntaxError: अप्रत्याशित टोकन।
JGleason

3
या, प्रतिक्रिया करें- हेलमेट का उपयोग करें और <head> टैग में css (यदि इसका url) इंजेक्ट करें
Kira

53

वेबपैक के साथ बंडल बनाते समय आपको सीएसएस-लोडर का उपयोग करने की आवश्यकता होती है ।

इसे स्थापित करो:

npm install css-loader --save-dev

और इसे अपने वेबपैक के विन्यास में लोडर में जोड़ें:

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

इसके बाद, आप js में css फाइल्स को शामिल कर पाएंगे।


1
मुझे इस परियोजना में एक और मॉड्यूल आयात करने की अनुमति नहीं है। क्या उनका एक और समाधान केवल रिएक्टज या देशी जेएस के साथ काम कर रहा है?
venter

इसलिए मुझे लगता है कि मुझे इस तरह से कुछ का उपयोग करना होगा: HTMLElement.style
venter

यह थोड़ा बदसूरत लगता है। आपको बंडल बिल्डिंग में परिवर्तन जोड़ने की अनुमति क्यों नहीं है?
एलेक्जेंड्रा लाज़रेव

यह अभिक्रियाओं के बारे में एक कार्यस्थल के लिए एक पोस्टप्रोसेसिंग है और हमें वर्कशिप के दौरान शामिल मॉड्यूल के साथ आवश्यकताओं को हल करने के लिए कहा गया है
venter

ठीक है, लेकिन सिर्फ यह उल्लेख करना चाहता था कि आपके प्रश्नों में पूछे गए स्टाइल टैग्स को सीएसएस फ़ाइलों को आयात नहीं करना है । ये 2 अलग-अलग मुद्दे हैं।
अलेक्जेंड्रा लाज़रेव

32

मैं 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>

मैं नीचे दिए गए उत्तर के रूप में भाग 1 जोड़ूंगा। और आप अपने घटक का परीक्षण करने के लिए मेरे उत्तर का पालन कर सकते हैं।
मिहिर पटेल

2
अगर यह बाहर की कोशिश की और यह काम नहीं करता है। मैंने इसे इस तरह से शामिल करने की कोशिश की है: import styles from "./disabledLink.css";और निम्न त्रुटि प्राप्त करें: मॉड्यूल नहीं मिला: त्रुटि: 'फ़ाइल' और 'निर्देशिका' को हल नहीं कर सकता है। c: \ Users \ Basti Kluth \ Documents \ पिज़्ज़ा-ऐप में c: \ user \ _ \ ग्राहक \ / src \ Components @ ./client/src/compenders/ShoppingCartLink.js 19: 20-49
venter

1
सीएसएस मॉड्यूल को अलग स्थापित किया जाना चाहिए, github.com/css-modules/css-modules
अलेक्जेंडर लाज़रेव

1
और मैं इस तरह के CSS, किसी भी Idea के लिए मीडिया क्वेरी कैसे लिख सकता हूँ?
सोनू बामनिया

18

निम्नलिखित एक रिएक्ट घटक में एक बाहरी सीएसएस फ़ाइल आयात करता है और <head />वेबसाइट के सीएसएस नियमों को आउटपुट करता है ।

  1. स्टाइल लोडर और सीएसएस लोडर स्थापित करें :
npm install --save-dev style-loader
npm install --save-dev css-loader
  1. Webpack.config.js में:
module.exports = {
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [ 'style-loader', 'css-loader' ]
            }
        ]
    }
}
  1. एक घटक फ़ाइल में:
import './path/to/file.css';

और मैं चौकीदार चलाने के लिए बेबल का उपयोग करता हूं शायद यह webpack.config.js फ़ाइल में बिल्कुल भी नहीं दिखता
एंटोन

क्या आपने सीएसएस-लोडर स्थापित किया है? इसके अलावा, मैं आपका webpack.config.js नहीं देखता हूं।
वेबर्स

1
आप rulesसरणी के मान के रूप में ऑब्जेक्ट प्रारूप में अधिक मॉड्यूल नियम जोड़ सकते हैं ।
अरी

4

ऊपर दिए गए समाधान पूरी तरह से बदल दिए गए हैं और पदावनत हो गए हैं। यदि आप सीएसएस मॉड्यूल का उपयोग करना चाहते हैं (आप आयातित सीएसएस-लोडर मानते हैं) और मैं इसके लिए इतने लंबे समय तक एक जवाब खोजने की कोशिश कर रहा हूं और आखिरकार किया। नए संस्करण में डिफ़ॉल्ट वेबपैक लोडर काफी अलग है।

अपने वेबपैक में, आपको cssRegex से शुरू होने वाले भाग को खोजने और इसे इसके साथ बदलने की आवश्यकता है;

{
  test: cssRegex,
  exclude: cssModuleRegex,
  use: getStyleLoaders({
      importLoaders: 1,
      modules: true,
      localIdentName: '[name]__[local]__[hash:base64:5]'
  }),
}


2

सीएसएस मॉड्यूल आपको नामकरण संघर्ष के बारे में चिंता किए बिना विभिन्न फाइलों में एक ही सीएसएस वर्ग नाम का उपयोग करने देता है।

Button.module.css

.error {
  background-color: red;
}

एक और-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>;
  }
}

क्या हमें यह काम करने के लिए कुछ भी करने की आवश्यकता है?
अभिषेक शर्मा

1
  1. स्टाइल लोडर और सीएसएस लोडर स्थापित करें:

    npm install --save-dev style-loader
    npm install --save-dev css-loader
    
  2. वेबपैक कॉन्फ़िगर करें

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

0

उन मामलों में जहां आप पूरी स्टाइलशीट में एक स्टाइलशीट से कुछ शैलियों को बिना बंडल के इंजेक्ट करना चाहते हैं, मैं 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`.

नोट: मैं इस परिवाद का लेखक हूं, और मैंने इसे उन मामलों के लिए बनाया है जहां शैलियों और सीएसएस मॉड्यूलों का बड़े पैमाने पर आयात सबसे अच्छा या सबसे व्यवहार्य समाधान नहीं है।


0

आप आवश्यक मॉड्यूल का उपयोग भी कर सकते हैं।

require('./componentName.css');
const React = require('react');

0

मेरे लिए एक्सट्रैक्ट-सीएसएस-चंक्स-वेबपैक-प्लगइन और सीएसएस-लोडर लोडर का उपयोग करना, नीचे देखें:

webpack.config.js आयात-सीएसएस-चंक्स-वेबपैक-प्लगइन आयात करें

const ExtractCssChunks = require('extract-css-chunks-webpack-plugin');

webpack.config.js css नियम जोड़ें , css चंक्स निकालें पहले css लोडर css-loader उन्हें html डॉक्युमेंट में एम्बेड करेगा, css-loader और extract-css-chunks-webpack-plugin पैकेज में सुनिश्चित करेगा। json dev निर्भरता

rules: [
      {
        test: /\.css$/,
        use: [
          {
            loader: ExtractCssChunks.loader,
          },
          'css-loader',
        ],
      }
]

webpack.config.js प्लगइन का उदाहरण बनाएं

plugins: [
    new ExtractCssChunks({
      // Options similar to the same options in webpackOptions.output
      // both options are optional
      filename: '[name].css',
      chunkFilename: '[id].css'
    })
  ]

और अब css का आयात संभव है और अब index.tsx जैसी tsx फ़ाइल में मैं इस आयात की तरह आयात का उपयोग कर सकता हूँ './Tree.css' जहाँ Tree.css में css नियम हैं जैसे

body {
    background: red;
}

मेरा ऐप टाइपस्क्रिप्ट का उपयोग कर रहा है और यह मेरे लिए काम करता है, स्रोत के लिए मेरे रेपो की जांच करें: https://github.com/nickjohngray/staticbackeditor


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.