css-in-js 메서드를 사용하여 반응 구성 요소에 클래스를 추가하는 경우 여러 구성 요소를 추가하려면 어떻게해야합니까?
다음은 클래스 변수입니다.
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
padding: 10
},
});
사용 방법은 다음과 같습니다.
return (
<div className={ this.props.classes.container }>
위는 작동하지만 classNames
npm 패키지 를 사용하지 않고 두 클래스를 모두 추가하는 방법이 있습니까? 다음과 같은 것 :
<div className={ this.props.classes.container + this.props.classes.spacious}>
답변
문자열 보간을 사용할 수 있습니다.
<div className={`${this.props.classes.container} ${this.props.classes.spacious}`}>
답변
이 패키지를 설치할 수 있습니다
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'
답변
답변
구성 요소에 여러 클래스를 적용하려면 적용하려는 클래스를 classNames 내에 래핑합니다.
예를 들어, 귀하의 상황에서 코드는 다음과 같아야합니다.
import classNames from 'classnames';
const styles = theme => ({
container: {
display: "flex",
flexWrap: "wrap"
},
spacious: {
padding: 10
}
});
<div className={classNames(classes.container, classes.spacious)} />
classNames를 가져와야합니다 !!!
하나의 구성 요소에서 여러 클래스를 사용하여 사용자 정의 버튼을 만드는 재료 UI 문서를 살펴보십시오.
답변
extend 속성을 사용할 수도 있습니다 ( jss-extend 플러그인 은 기본적으로 활성화 됨).
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spaciousContainer: {
extend: 'container',
padding: 10
},
});
// ...
<div className={ this.props.classes.spaciousContainer }>
답변
나는 이것이 당신의 문제를 해결할 것이라고 생각합니다.
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
padding: 10
},
});
그리고 반응 구성 요소에서 :
<div className={`${classes.container} ${classes.spacious}`}>
답변
예, jss-composes는 다음을 제공합니다.
const styles = theme => ({
container: {
display: 'flex',
flexWrap: 'wrap'
},
spacious: {
composes: '$container',
padding: 10
},
});
그런 다음 클래스를 사용합니다.