在反应中使用 css 模块 我怎样才能将 className 作为 prop 传递给组件
using css modules in react how can I pass a className as a prop to a component
如果我有一个 React 组件并且我想传入一个类名,我该如何使用 CSS 模块来实现。它目前只给出 className 而不是我会得到的哈希生成的 css 模块名称
<div className={styles.tile + ' ' + styles.blue}>
这是我的Tile.js组件
import React, { Component } from 'react';
import styles from './Tile.css';
class Tile extends Component {
render() {
return (
<div className={styles.tile + ' ' + this.props.color}>
{this.props.children}
</div>
);
}
};
export default Tile;
Tile.css
@value colors: "../../styles/colors.css";
@value blue, black, red from colors;
.tile {
position: relative;
width: 100%;
padding-bottom: 100%;
}
.black {
background-color: black;
}
.blue {
background-color: blue;
}
.red {
background-color: red;
}
正如您所看到的,我在我的 Author Tile 中按如下方式初始化了这个 Tile 包装器组件,但我想将颜色道具传递到组件中:
作者Tile.js
return (
<Tile orientation='blue'>
<p>{this.props.title}</p>
<img src={this.props.image} />
</Tile>
);
来自文档:
Avoid using multiple CSS Modules to describe a single element.
https://github.com/gajus/react-css-modules#multiple-css-modules
@value colors: "../../styles/colors.css";
@value blue, black, red from colors;
.tile {
position: relative;
width: 100%;
padding-bottom: 100%;
}
.black {
composes: tile;
background-color: black;
}
.blue {
composes: tile;
background-color: blue;
}
.red {
composes: tile;
background-color: red;
}
然后 <div className={styles[this.props.color]}
应该做的工作,例如:
render: function(){
// ES2015
const className = styles[this.props.color];
// ES5
var className = '';
if (this.props.color === 'black') {
className = styles.black;
}
return (
<div className={className}>
{this.props.children}
</div>
}
如果我有一个 React 组件并且我想传入一个类名,我该如何使用 CSS 模块来实现。它目前只给出 className 而不是我会得到的哈希生成的 css 模块名称
<div className={styles.tile + ' ' + styles.blue}>
这是我的Tile.js组件
import React, { Component } from 'react';
import styles from './Tile.css';
class Tile extends Component {
render() {
return (
<div className={styles.tile + ' ' + this.props.color}>
{this.props.children}
</div>
);
}
};
export default Tile;
Tile.css
@value colors: "../../styles/colors.css";
@value blue, black, red from colors;
.tile {
position: relative;
width: 100%;
padding-bottom: 100%;
}
.black {
background-color: black;
}
.blue {
background-color: blue;
}
.red {
background-color: red;
}
正如您所看到的,我在我的 Author Tile 中按如下方式初始化了这个 Tile 包装器组件,但我想将颜色道具传递到组件中:
作者Tile.js
return (
<Tile orientation='blue'>
<p>{this.props.title}</p>
<img src={this.props.image} />
</Tile>
);
来自文档:
Avoid using multiple CSS Modules to describe a single element. https://github.com/gajus/react-css-modules#multiple-css-modules
@value colors: "../../styles/colors.css";
@value blue, black, red from colors;
.tile {
position: relative;
width: 100%;
padding-bottom: 100%;
}
.black {
composes: tile;
background-color: black;
}
.blue {
composes: tile;
background-color: blue;
}
.red {
composes: tile;
background-color: red;
}
然后 <div className={styles[this.props.color]}
应该做的工作,例如:
render: function(){
// ES2015
const className = styles[this.props.color];
// ES5
var className = '';
if (this.props.color === 'black') {
className = styles.black;
}
return (
<div className={className}>
{this.props.children}
</div>
}