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;
相关推荐
java_logo4 分钟前
CALIBRE-WEB Docker 容器化部署指南
前端·docker·容器·电子书·calibre·calibre-web·docker部署calibre
Aotman_27 分钟前
JavaScript去除对象字段空格
开发语言·前端·javascript
爱网安的monkey brother1 小时前
vue3+ts项目自建训练
前端·javascript·vue.js
哆啦A梦15881 小时前
商城后台管理系统 02,上传图片实现
前端·javascript·vue.js·elementui
破z晓1 小时前
若依(vue版)集成ArcGIS
前端·vue.js·arcgis
jinxinyuuuus1 小时前
FIRE之旅 财务计算器:实时交互式建模与前端性能工程
前端·人工智能·算法·自动化
Redundantº1 小时前
vuedraggable前端拖拽插件
前端
snow@li1 小时前
前端:软件开发中的秤砣理论 / 越简单越可靠 / 提炼组织架构 / 精确标定工作 / 有主干有支流 / 不追求繁琐 / 不做表面工作
前端·架构