classnames
这个库在我们的项目中有大量的使用到,它不仅很实用,还非常好用,但还有人不知道这个库,我真的是十分心痛。
通过 classnames
,我们可以给组件设置多个 className
,还可以根据需要动态设置 className
,简化我们样式相关的逻辑代码。
// 鼠标离开
.btn-leave {
background-color: red;
font-size: 25px;
}
// 鼠标放上
.btn-over {
background-color: green;
font-size: 40px;
border-radius: 20px;
}
.btn-color {
color: yellow;
}
.btn-margin {
margin: 50px;
}
import { default as classNames } from 'classnames';
import { Component } from 'react';
import './style.less';
export default class ClassnamesPage extends Component {
render() {
return (
<div style={{ padding: '20px' }}>
ClassnamesPage
<MyComponent></MyComponent>
</div>
);
}
}
class MyComponent extends Component {
state = {
// 鼠标是否放上去
isMouseOver: false,
};
render() {
// 设置多个className
var btnClass = classNames('btn-color', 'btn-margin', {
// 动态设置className,右边为true时生效
'btn-leave': !this.state.isMouseOver,
'btn-over': this.state.isMouseOver,
});
return (
<div>
<button
className={btnClass}
// 鼠标放上
onMouseOver={() => {
this.setState({
isMouseOver: true,
});
}}
// 鼠标离开
onMouseLeave={() => {
this.setState({
isMouseOver: false,
});
}}
>
{this.state.isMouseOver ? '鼠标放上' : '鼠标离开'}
</button>
</div>
);
}
}
这个按钮,鼠标离开与放上去时的样式不一样,通过 classnames
库非常简洁直白的实现了这个功能,你真的值得拥有。