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;
相关推荐
极客密码10 分钟前
来看看我用Codex两周时间vibe coding的这款轻量级的剪贴板管理应用,win/mac系统均可用
前端·ai编程·vibecoding
前端双越老师11 分钟前
Agent 实战: 智语 + baoyu-skills 自动发布文章到公众号
前端·agent·全栈
hunterandroid21 分钟前
Jetpack Compose 入门:用声明式 UI 写 Android 页面
前端
以和为贵24 分钟前
前端手写 RAG 踩坑实录:四个让检索"翻车"的坑
前端·人工智能·面试
用户21366100357228 分钟前
Redux异步方案与React性能优化Hooks
前端
假如让我当三天老蒯30 分钟前
TypeScript 继续学习(学习用)
前端·面试·typescript
玄玄子30 分钟前
CSS 浮动引起父元素高度塌陷
前端·css
竹林81833 分钟前
从 ethers.js 到 viem:我在一个 DeFi 看板项目中踩过的所有坑与最终方案
前端·javascript
kyrie2836 分钟前
React Redux 完整用法
前端
程序员鱼皮41 分钟前
Codex 又出王炸功能「录制回放」,实战测评!附原理浅析
前端·后端·ai编程