【发布时间】:2021-06-28 06:24:47
【问题描述】:
我想导入 .scss 类并将其应用于 React 组件的 className 属性。
我的项目树如下:
root/
...
config/
...
webpack.config.js
src/
...
global.d.ts
app/
...
components/
layout/
...
Box/
Box.scss
Box.tsx
.d.ts 文件:
declare module '*.scss' {
const content: { [className: string]: string }
export = content
}
webpack.config.js
...
module: {
rules: [
// assets (.css, .scss)
{
test: /\.s?css$/i, // s[ac]ss
use: [
// Creates `style` nodes from JS strings
'style-loader',
// Translates CSS into CommonJS
'css-loader',
// Compiles Sass to CSS
'sass-loader',
],
},
// typescript
{
test: /\.tsx?$/,
use: 'ts-loader',
exclude: path.resolve(rootPath, 'node_modules'),
},
],
},
...
Box.scss
.Box {
padding: 16px;
border-radius: 4px;
text-align: center;
color: #ede9f9;
font-weight: 700;
background-color: #47b0b0;
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.25);
}
Box.tsx
import * as React from 'react'
import * as styles from './Box.scss'
type BoxProps = {
children: React.ReactNode
}
const Box = ({ children }: BoxProps) => <div className={styles.Box}>{children}</div>
export default Box
console.log(styles.Box) 打印 undefined。我错过了什么?
【问题讨论】:
标签: javascript reactjs typescript webpack sass