05 React使用classnames控制样式

shell 复制代码
npm install classnames

例子:

javascript 复制代码
import classNames from 'classnames';

// 用法1:传递多个类名
const classes = classNames('foo', 'bar', 'baz');
// 结果: 'foo bar baz'

// 用法2:传递对象,根据条件来选择添加类名
const isActive = true;
const classes = classNames('button', { 'active': isActive });
// 结果: 'button active'

// 用法3:传递数组
const additionalClasses = ['btn', 'btn-primary'];
const classes = classNames('button', additionalClasses);
// 结果: 'button btn btn-primary'

React 例子

javascript 复制代码
// App.js

import React, {useState} from 'react';
import classNames from 'classnames';
import styles from './App.module.css'

// MyComponent.js
function MyComponent({isActive}) {
    const buttonClasses = classNames('button', {
        [styles.active]: isActive,
    });

    return (
        <button className={buttonClasses}>Active Button</button>
    );
}

function App() {
    const [isActive, setIsActive] = useState(false);

    const toggleActive = () => {
        setIsActive(!isActive);
    };

    return (
        <div className="App">
            <h1>Example App</h1>
            <MyComponent isActive={isActive}/>
            <button onClick={toggleActive}>Toggle Active</button>
        </div>
    );
}

export default App;
相关推荐
Mike117.几秒前
GBase 8a 物化视图依赖和 DDL 风险排查记录
java·服务器·前端
蜡台17 分钟前
Vue3 Hook 与 Store 状态管理:深度解析与选型指南
前端·javascript·vue.js
無名路人30 分钟前
小程序点餐页吸顶滚动
前端·微信小程序·ai编程
小小小前端啊35 分钟前
前端手写代码大全
前端
李白的天不白43 分钟前
大规模请求数据并发问题
java·前端·数据库
冲浪中台1 小时前
【无标题】
前端·低代码
openKaka_1 小时前
beginWork 的第一站:HostRoot 如何把 App 接入 Fiber 树
前端·javascript·react.js
我命由我123452 小时前
Dart - Dart SDK、Hello World 案例、变量声明、常量声明、常量 final、字符串类型
前端·flutter·前端框架·html·web·dart·web app
冴羽yayujs2 小时前
GitHub 前端热榜项目 - 日榜(2026-05-11)
前端·github
~|Bernard|2 小时前
四,go语言中GMP调度模型
java·前端·golang