【发布时间】:2016-04-22 06:11:52
【问题描述】:
我有一个最小的 React 组件,它由两个文件组成:button.jsx 和 button.less。样式被导入,并且类名被附加一个散列,以使所有样式对组件都是本地的。
这很好,但我希望将所有组件代码放在一个文件中。是否可以在不丢失 css 模块化的情况下内联 jsx 文件中的样式?
当前代码
button.jsx
import React from 'react';
import styles from './button.less'
export default class Button extends React.Component {
render() {
return <button className={styles.primary}>{this.props.text}</button>;
}
}
button.less
@import '~semantic-ui/src/definitions/elements/button.less';
.common {
composes: ui button;
}
.primary {
composes: common primary;
}
webpack.config.js(相关位)
module: {
loaders: [
{
test: /\.jsx$/,
loader: 'babel'
},
{
test: /\.less$/,
loader: "style!css?modules&importLoaders=1!less"
}
]
},
我想写什么
button.jsx
<style lang="less" modules>
@import '~semantic-ui/src/definitions/elements/button.less';
.common {
composes: ui button;
}
.primary {
composes: common primary;
}
</style>
import React from 'react';
export default class Button extends React.Component {
render() {
return <button className={styles.primary}>{this.props.text}</button>;
}
}
受 vue.js 和 vue-loader 启发。
我相信这是这个未回答问题的重复: Using css-loader inline with Webpack + React
【问题讨论】:
-
React Styleable 会为你工作github.com/pluralsight/react-styleable?
标签: css reactjs webpack react-jsx css-modules