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;
相关推荐
黑客飓风13 分钟前
JavaScript 性能优化实战大纲
前端·javascript·性能优化
emojiwoo1 小时前
【前端基础知识系列六】React 项目基本框架及常见文件夹作用总结(图文版)
前端·react.js·前端框架
张人玉2 小时前
XML 序列化与操作详解笔记
xml·前端·笔记
杨荧2 小时前
基于Python的宠物服务管理系统 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python·信息可视化
YeeWang3 小时前
🎉 Eficy 让你的 Cherry Studio 直接生成可预览的 React 页面
前端·javascript
gnip3 小时前
Jenkins部署前端项目实战方案
前端·javascript·架构
Orange3015113 小时前
《深入源码理解webpack构建流程》
前端·javascript·webpack·typescript·node.js·es6
lovepenny4 小时前
Failed to resolve entry for package "js-demo-tools". The package may have ......
前端·npm
超凌4 小时前
threejs 创建了10w条THREE.Line,销毁数据,等待了10秒
前端
车厘小团子4 小时前
🎨 前端多主题最佳实践:用 Less Map + generate-css 打造自动化主题系统
前端·架构·less