反应网络包。使用 css-loader 更新类名
React-Webpack. Update className with css-loader
据我所知,通过执行 className={styles.className}
可以仅向元素添加一个 class,即使它由多个元素组成。
因此目前代码使用 ternary operator
以根据 state.cross
值呈现不同的元素样式。
export default class Header extends Component {
constructor(props) {
super(props);
this.state = { cross: false };
this.showCross = this.showCross.bind(this);
this.showLine = this.showLine.bind(this);
}
showCross() {
this.setState({cross: true});
}
showLine() {
this.setState({cross: false});
}
render() {
return (
<div onMouseEnter={this.showCross} onMouseLeave={this.showLine} className={styles.blockClose}>
<a className={this.state.close ? styles.closeCross : styles.closeLine}> </a>
</div>
)
}
}
它的实际作用是在 state
被更改并应用 transform
之后使 2 行看起来像十字。
:local(.closeLine) {
...20px line
&::before {
...equal line
}
}
:local(.closeCross) {
composes: closeLine;
transform: rotate(-45deg);
&::before {
transform: rotate(90deg);
}
}
我的问题是:
是否可以通过像 element.classList.toggle(className)
这样的操作来切换 class 来管理元素的样式,而不是条件渲染。
:local(.closeCross) {
transform: rotate(-45deg);
&::before {
transform: rotate(90deg);
}
}
您可以使用非常棒的类名包,它可以让您轻松拥有多个 类。我不确定你的最终目标,但这样做很容易:
<a className={classNames(
styles.closeCross, { // <-- always applied
[styles.closeLine]: this.state.close <-- applied only when closed
})}
> </a>
据我所知,通过执行 className={styles.className}
可以仅向元素添加一个 class,即使它由多个元素组成。
因此目前代码使用 ternary operator
以根据 state.cross
值呈现不同的元素样式。
export default class Header extends Component {
constructor(props) {
super(props);
this.state = { cross: false };
this.showCross = this.showCross.bind(this);
this.showLine = this.showLine.bind(this);
}
showCross() {
this.setState({cross: true});
}
showLine() {
this.setState({cross: false});
}
render() {
return (
<div onMouseEnter={this.showCross} onMouseLeave={this.showLine} className={styles.blockClose}>
<a className={this.state.close ? styles.closeCross : styles.closeLine}> </a>
</div>
)
}
}
它的实际作用是在 state
被更改并应用 transform
之后使 2 行看起来像十字。
:local(.closeLine) {
...20px line
&::before {
...equal line
}
}
:local(.closeCross) {
composes: closeLine;
transform: rotate(-45deg);
&::before {
transform: rotate(90deg);
}
}
我的问题是:
是否可以通过像 element.classList.toggle(className)
这样的操作来切换 class 来管理元素的样式,而不是条件渲染。
:local(.closeCross) {
transform: rotate(-45deg);
&::before {
transform: rotate(90deg);
}
}
您可以使用非常棒的类名包,它可以让您轻松拥有多个 类。我不确定你的最终目标,但这样做很容易:
<a className={classNames(
styles.closeCross, { // <-- always applied
[styles.closeLine]: this.state.close <-- applied only when closed
})}
> </a>