鍍金池/ 問答/HTML5  HTML/ react中如何引用全局scss文件中定義的變量以及函數(shù)

react中如何引用全局scss文件中定義的變量以及函數(shù)

我的react項(xiàng)目樣式結(jié)構(gòu)是這樣的:

  1. 在項(xiàng)目的根目錄有一個(gè)全局的scss文件style.scss,里面定義了公共樣式和變量、函數(shù)
  2. 然后,每個(gè)組件都有單獨(dú)的一個(gè)局部樣式

圖片描述

style.scss:

$color: darksalmon;

.text-center{
    text-align: center;
}

default.scss:

.outer{
  background-color: #0088cc;
  @extend .text-center;//報(bào)錯(cuò)
  .inner{
    color: $color;//報(bào)錯(cuò)
  }
}

現(xiàn)在出現(xiàn)的情況是:我在項(xiàng)目入口文件index.js引入了style.scss,然后在任意的jsx里面用className引入全局scss文件中的樣式?jīng)]問題,但如果我在局部scss文件中想用@extend去繼承全局scss文件中的樣式,或者引用全局scss文件的變量、函數(shù)均報(bào)錯(cuò),報(bào)錯(cuò)說找不到相關(guān)樣式、變量。

請(qǐng)問該如何配置,局部scss文件可以引用全局scss文件中的變量以及函數(shù)?

另外,我配置了css模塊化,相關(guān)webpack配置如下:

 module:{
        rules:[
            {
                test: /\.scss$/,
                exclude: path.resolve(__dirname,'./style.scss'),
                use: extractTextPlugin.extract({
                    fallback: "style-loader",
                    use: [
                        {
                            loader: 'css-loader',
                            options: {
                                modules: true,
                                localIdentName: "[path][name]-[local]-[hash:base64:5]",
                                sourceMap: true,
                            }
                        },
                        {
                            loader: 'resolve-url-loader',
                        },
                        {
                            loader: 'sass-loader'
                        }
                    ]
                })
            },
            {
                test: /\.scss$/,
                include: path.resolve(__dirname,'./style.scss'),
                use: extractTextPlugin.extract({
                    fallback: "style-loader",
                    use: [
                        {
                            loader: 'css-loader',
                            options: {
                                sourceMap: true,
                            }
                        },
                        {
                            loader: 'resolve-url-loader',
                        },
                        {
                            loader: 'sass-loader'
                        }
                    ]
                })
            }
        ]
    }
回答
編輯回答
懶洋洋

只知道把style.scss @import 進(jìn)入 你的局部scss這樣用。

樣式文件,應(yīng)該不支持你那樣直接用一個(gè)全局樣式類名吧,也可能是我不會(huì),你再查查。

2018年7月10日 01:00
編輯回答
墻頭草

我知道,哈哈
這是我的項(xiàng)目結(jié)構(gòu)
clipboard.png
首先需要npm i sass-resources-loader --save-dev
然后需要在webpack.config.dev中修改一下

clipboard.png

注意是./src**
最后你需要在App.js中引入定義全局變量的scss文件,這樣你就可以在所有的scss文件中使用common.scss中定義的變量了,不需要每次都引入common.scss。
App.js文件如下
clipboard.png

萬事大吉了,哈哈

2018年3月16日 18:27
編輯回答
逗婦惱

配置文件里面在加個(gè)lodaer。sass-resources-loader

2018年4月10日 10:06