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 库非常简洁直白的实现了这个功能,你真的值得拥有。

相关推荐
计算机魔术师2 小时前
同样是AI辅助建造,为什么有的游戏三个月就烂尾了?
前端
用户921080262862 小时前
0. 做 Agent 产品,前端 AI 组件框架怎么选?
前端
拾年2753 小时前
React Hooks 进阶篇:useMemo / useCallback / useReducer / useImperativeHandle,用「算账 +
前端·javascript·react.js
Jackson__3 小时前
面试官:如何在老项目中使用新框架,并实现通信?
前端·javascript·面试
拾年2753 小时前
React Hooks 保姆级教程:把组件想象成失忆的打工人,4 个 Hook 带你原地起飞
前端·javascript·react.js
深海鱼在掘金3 小时前
深入浅出RAG——第7章:基础篇实战:文档问答机器人
人工智能·typescript·命令行
mmsx3 小时前
一个 Bug 修了 12 轮,根因只有一句话:AI 编程时代,日志才是唯一的真相
前端
默_笙3 小时前
😝 5 亿次循环卡死页面?我用 Web Worker 把它扔进后台线程,页面丝滑如初
前端·javascript
CAD老兵3 小时前
一行代码集成 DWG/DXF 图纸查看:测量批注,数据不出站
前端·javascript·github
小林ixn3 小时前
单例模式:从弹窗管理到全局状态,一个模式搞定
前端·javascript·设计模式