일반 클래스 목록에 동적 클래스를 추가해야하지만 다음과 같은 방법 (아기 사용)을 모릅니다.
<div className="wrapper searchDiv {this.state.something}">
...
</div>
어떤 아이디어?
답변
일반적인 JavaScript 중 하나를 수행 할 수 있습니다.
className={'wrapper searchDiv ' + this.state.something}
또는 백틱이있는 문자열 템플릿 버전 :
className={`wrapper searchDiv ${this.state.something}`}
두 유형 모두 물론 JavaScript 일 뿐이지 만 첫 번째 패턴은 전통적인 종류입니다.
어쨌든 JSX에서는 중괄호로 묶인 모든 것이 JavaScript로 실행되므로 기본적으로 원하는 모든 것을 할 수 있습니다. 그러나 JSX 문자열 과 중괄호를 결합하는 것은 속성에 대한 이동이 아닙니다.
답변
프로젝트가 커질 때 추가해야 할 동적 클래스 수에 따라 GitHub에서 JedWatson 의 클래스 이름 유틸리티를 확인하는 것이 좋습니다. 조건부 클래스를 객체로 표시하고 true로 평가되는 클래스를 반환합니다.
따라서 React 문서의 예를 들면 다음과 같습니다.
render () {
var btnClass = classNames({
'btn': true,
'btn-pressed': this.state.isPressed,
'btn-over': !this.state.isPressed && this.state.isHovered
});
return <button className={btnClass}>I'm a button!</button>;
}
상태 변경이있는 경우 React가 다시 렌더링을 트리거하므로 동적 클래스 이름은 자연스럽게 처리되고 구성 요소의 상태에 따라 최신 상태로 유지됩니다.
답변
가능한 간단한 구문은 다음과 같습니다.
<div className={`wrapper searchDiv ${this.state.something}`}>
답변
다음은 Dynamic className에 대한 최상의 옵션입니다. Javascript에서와 마찬가지로 연결을 수행하십시오.
className={
"badge " +
(this.state.value ? "badge-primary " : "badge-danger ") +
" m-4"
}
답변
상태 조건에 따라 표시되어야하는 스타일 이름이 필요한 경우이 구성을 사용하는 것이 좋습니다.
<div className={'wrapper searchDiv' + (this.state.something === "a" ? " anotherClass" : "")'}>
답변
후크를 사용하여 시도하십시오.
const [dynamicClasses, setDynamicClasses] = React.useState([
"dynamicClass1", "dynamicClass2
]);
그리고 이것을 className 속성에 추가하십시오 :
<div className=`wrapper searchDiv ${[...dynamicClasses]}`>
...
</div>
수업을 추가하려면 :
const addClass = newClass => {
setDynamicClasses([...dynamicClasses, newClass])
}
수업을 삭제하려면 :
const deleteClass= classToDelete => {
setDynamicClasses(dynamicClasses.filter(class = > {
class !== classToDelete
}));
}
답변
이 npm 패키지를 사용할 수 있습니다 . 모든 것을 처리하고 변수 또는 함수를 기반으로 정적 및 동적 클래스에 대한 옵션이 있습니다.
// Support for string arguments
getClassNames('class1', 'class2');
// support for Object
getClassNames({class1: true, class2 : false});
// support for all type of data
getClassNames('class1', 'class2', ['class3', 'class4'], {
class5 : function() { return false; },
class6 : function() { return true; }
});
<div className={getClassNames({class1: true, class2 : false})} />