gpt4 book ai didi

reactjs - 未定义的 css 模块类名

转载 作者:行者123 更新时间:2023-12-04 02:59:06 27 4
gpt4 key购买 nike

我有以下组件,导入的 css 和 webpack 配置 - 显然我已经导入了相关的 css 模块,但是我的 react 输出 className={css__main.container} 和导入的 css 之间的连接-loader 似乎不是由 react 制作的 - css_main.container 没有映射到 .main__container___2MJY (它返回 undefined 因此 react/webpack 不包含在输出中) - 我敢肯定,作为 css 模块的新手,我错过了一步,谁能指出它可能是什么? ("css-loader": "^0.28.11" 安装在 package.json 中)。

import React from 'react';
import {Route, browserHistory, Switch, Link, BrowserRouter, HashRouter} from 'react-router-dom';
import css__main from "../css/main.css";

import NoMatch from "./no-match.js";
import ButtonLink from "../components/buttonLink.js";
import List from "./lists/list-base.js";
import Home from "./subs/home.js";


class Main extends React.Component {
render(){
console.log( JSON.stringify( css__main ));
//[["./src/css/main.css",".main__container___2MJY_{border:1px solid #d0d0d0;-moz-box-shadow:0 0 8px #d0d0d0;box-shadow:0 0 8px #d0d0d0;overflow:hidden;height:80vh;display:flex;flex-direction:column;justify-content:flex-start}.main__header___3ZGBv{color:#444;background-color:transparent;border-bottom:1px solid #d0d0d0;font-size:1.2em;height:65px;display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;padding:15px 20px}",""]]
return (
<div id="container" className={css__main.container}>
<div className={css__main.header}>
Flix AB Testing
</div>
<HashRouter history={browserHistory}>
<Switch>
<Route exact path="/" component={Home}/>
<Route path="/active" component={List}/>
<Route path="/inactive" component={List}/>
<Route path="/expire" component={List}/>
<Route path="/delete" component={List}/>
<Route component={NoMatch}/>
</Switch>
</HashRouter>
</div>
);
};
}

export default Main;

导入此 css(我可以将其输出到控制台,如上面的代码块所示):

.container {
border: 1px solid #D0D0D0;
-moz-box-shadow: 0 0 8px #D0D0D0;
box-shadow: 0 0 8px #D0D0D0;
overflow: hidden;
height: 80vh;
display: flex;
flex-direction: column;
justify-content: flex-start;
}

.header {
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 1.2em;
height: 65px;
display: flex;
flex-direction: row;
align-items: stretch;
justify-content: space-between;
padding: 15px 20px;
}

我的 webpack 配置。如下:

module.exports = {
entry: [
'./src/index.js'
],
module: {
rules: [
{
test: /\.(js|jsx)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.css$/,
loader: 'css-loader',
options: {
minimize: true,
camelCase: 'dashes',
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
},
resolve: {
extensions: ['*', '.js', '.jsx', '.css']
},
output: {
path: __dirname + '/dist',
publicPath: '/',
filename: 'bundle.js'
},
devServer: {
contentBase: './dist'
}
};

最佳答案

好的 - 所以它以下列方式工作。最后一步是包含 style-loader 以及 css-loader。我读过其他地方不需要将模块设置为 true,所以必须做进一步的研究。

我认为有更多知识的人(或者我,当我进一步加快速度时)将能够在这里将一些松散的部分联系在一起 - 但如果您遇到与我相同的问题,这将起作用。

我用 :local(myclass) 包围了我的 css 类 {/这里有一些 css/} 以暂时获得本地作用域,直到我更好地理解。

{
test: /\.css$/,
use: [
'style-loader',
{
loader: 'css-loader',
options: {
minimize: true,
camelCase: 'dashes',
modules: true,
localIdentName: '[name]__[local]___[hash:base64:5]'
}
}
]
}

如果您不担心这些选项,下面的替代方案是最简单的。

{
use: ['style-loader', 'css-loader']
}

关于reactjs - 未定义的 css 模块类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50973143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com