fat*_*ahn 51 css reactjs material-design material-ui jss
使用css-in-js方法向react组件添加类,如何添加多个组件?
这是classes变量:
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
padding: 10
},
});
Run Code Online (Sandbox Code Playgroud)
这是我如何使用它:
return (
<div className={ this.props.classes.container }>
Run Code Online (Sandbox Code Playgroud)
上面的工作,但是有没有办法添加两个类,而不使用classNamesnpm包?就像是:
<div className={ this.props.classes.container + this.props.classes.spacious}>
Run Code Online (Sandbox Code Playgroud)
klu*_*gjo 91
你可以使用字符串插值:
<div className={`${this.props.classes.container} ${this.props.classes.spacious}`}>
Run Code Online (Sandbox Code Playgroud)
Min*_*ini 40
你可以安装这个包
https://github.com/JedWatson/classnames
然后像这样使用它
classNames('foo', 'bar'); // => 'foo bar'
classNames('foo', { bar: true }); // => 'foo bar'
classNames({ 'foo-bar': true }); // => 'foo-bar'
classNames({ 'foo-bar': false }); // => ''
classNames({ foo: true }, { bar: true }); // => 'foo bar'
classNames({ foo: true, bar: true }); // => 'foo bar'
// lots of arguments of various types
classNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'
// other falsy values are just ignored
classNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'
Run Code Online (Sandbox Code Playgroud)
wil*_*l92 13
要对一个组件应用多个类,请将要应用的类包装在classNames中。
例如,根据您的情况,您的代码应如下所示:
import classNames from 'classnames';
const styles = theme => ({
container: {
display: "flex",
flexWrap: "wrap"
},
spacious: {
padding: 10
}
});
<div className={classNames(classes.container, classes.spacious)} />
Run Code Online (Sandbox Code Playgroud)
确保您导入classNames !!!
看一下材料ui文档,他们在一个组件中使用多个类来创建自定义按钮
Muz*_*301 11
您可以通过这种方式同时添加多个字符串类和变量类或道具类
className={`${classes.myClass} ${this.props.classes.myClass2} MyStringClass`}
Run Code Online (Sandbox Code Playgroud)
同时进行三堂课
您还可以使用extend属性(默认情况下启用jss-extend插件):
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spaciousContainer: {
extend: 'container',
padding: 10
},
});
// ...
<div className={ this.props.classes.spaciousContainer }>
Run Code Online (Sandbox Code Playgroud)
您可以使用clsx。我注意到它在MUI按钮示例中使用
首先安装它:
npm install --save clsx
然后将其导入您的组件文件中:
import clsx from 'clsx';
然后在组件中使用导入的函数:
<div className={ clsx(classes.container, classes.spacious)}>
是的,jss-composes为您提供了这一点:
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
composes: '$container',
padding: 10
},
});
Run Code Online (Sandbox Code Playgroud)
然后,您只需使用classes.spacious。
小智 5
我认为这可以解决您的问题:
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
padding: 10
},
});
Run Code Online (Sandbox Code Playgroud)
和在反应成分:
<div className={`${classes.container} ${classes.spacious}`}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
35918 次 |
| 最近记录: |