React | classnames

classnames 这个库在我们的项目中有大量的使用到,它不仅很实用,还非常好用,但还有人不知道这个库,我真的是十分心痛。

通过 classnames,我们可以给组件设置多个 className,还可以根据需要动态设置 className,简化我们样式相关的逻辑代码。

css 复制代码
// 鼠标离开
.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;
}
typescript 复制代码
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 库非常简洁直白的实现了这个功能,你真的值得拥有。

相关推荐
原谅我很悲6 分钟前
实际开发中,前端项目安装依赖问题总结
前端
humors2211 小时前
java实现excel导入参考资料合集
java·前端·后端·wps·导出·导入·office
New.file2 小时前
AJAX详解
前端·ajax·okhttp
小七蒙恩3 小时前
java 上传txt json等类型文件解析后返回给前端
java·前端·json
糕冷小美n3 小时前
jeecgbootvue3列表数据状态为数字时,手动赋值的三种方法
前端·javascript·vue.js
mqiqe3 小时前
Nginx 配置前端后端服务
运维·前端·nginx
小羊小羊,遇事不难4 小时前
Error: near “112136084“: syntax
java·服务器·前端
Domain-zhuo5 小时前
CSS实现一个自定义的滚动条
前端·javascript·css·vue.js·git·node.js
autumn8685 小时前
css的长度单位有那些?
前端·css
李贺梖梖5 小时前
CSS2笔记
前端