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;
相关推荐
huangql5206 小时前
前端身份识别与灰度发布完整指南
前端
JackieDYH6 小时前
CSS实现跑马灯效果-案例
前端·css·css3
羽沢316 小时前
Vue3组件间通信——pinia
前端·javascript·vue.js
BBB努力学习程序设计6 小时前
简易横向导航制作指南
前端·html
BBB努力学习程序设计6 小时前
深入理解CSS定位叠放次序:z-index完全指南
前端·html
头疼8466 小时前
vue 组件实现 、background-hover随鼠标丝滑移动~
前端
焦糖小布丁7 小时前
加http和https访问的网站不同?
前端
人工智能的苟富贵7 小时前
用 Rust 写一个前端项目辅助工具:JSON 格式化器
前端·rust·json
季春二九7 小时前
Edge 卸载工具 | 版本号1.0 | 专为彻底卸载Microsoft Edge设计
前端·microsoft·edge·edge 卸载工具
雨过天晴而后无语7 小时前
HTML中JS监听输入框值的即时变化
前端·javascript·html