博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react 通过 classnames 处理 多个class 的问题
阅读量:6842 次
发布时间:2019-06-26

本文共 1589 字,大约阅读时间需要 5 分钟。

react原生动态添加多个className会报错:

import style from './style.css'

想要得到最终渲染的效果是:

引入classnames库,安装:

npm install classnames --save

使用:

import classnames from 'classnames'

可以将后面的true省略,但这种我认为是比较直观的,可以对传入的class进行比较明显的动态判断

其他用法:

classNames('foo', 'bar'); // => 'foo bar'classNames('foo', { bar: true }); // => 'foo bar'classNames({ 'foo-bar': true }); // => 'foo-bar'classNames({ 'foo-bar': false }); // => ''classNames({ foo: true }, { bar: true }); // => 'foo bar'classNames({ foo: true, bar: true }); // => 'foo bar'// lots of arguments of various typesclassNames('foo', { bar: true, duck: false }, 'baz', { quux: true }); // => 'foo bar baz quux'// other falsy values are just ignoredclassNames(null, false, 'bar', undefined, 0, 1, { baz: null }, ''); // => 'bar 1'

也可以传入数组对象:

var arr = ['b', { c: true, d: false }];classNames('a', arr); // => 'a b c'

可以传入动态class

let buttonType = 'primary';classNames({ [`btn-${buttonType}`]: true });

在react中可以直接在classname内部传入动态class并进行条件判断,

不适用classnames时的书写方式:

var Button = React.createClass({  // ...  render () {    var btnClass = 'btn';    if (this.state.isPressed) btnClass += ' btn-pressed';    else if (this.state.isHovered) btnClass += ' btn-over';    return ;  }});

使用了之后可以简化:

var classNames = require('classnames');var Button = React.createClass({  // ...  render () {    var btnClass = classNames({      btn: true,      'btn-pressed': this.state.isPressed,      'btn-over': !this.state.isPressed && this.state.isHovered    });    return ;  }});

.

转载于:https://www.cnblogs.com/crazycode2/p/9249125.html

你可能感兴趣的文章
后缀数组学习笔记——罗穗骞倍增算法代码
查看>>
Automating Capistrano Password Prompts with Expect
查看>>
用 HTML5 和 Javascript 仿制一个水果忍者网页版! (直接浏览器在线玩+源代码下载)...
查看>>
设计模式简介
查看>>
删除数组中某一匹配项
查看>>
Sharepoint学习笔记—error处理-- The user does not exist or is not unique.
查看>>
CSS占位隐藏(转)
查看>>
利用jsdoc-toolkit生成javascript文档
查看>>
javascript 判断浏览器客户端
查看>>
NSString 中包含中文字符时转换为NSURL
查看>>
排序总结
查看>>
PreferenceCategory背景颜色设置
查看>>
Cocos2d-xna : 横版战略游戏开发实验4 Layer构建丰富的交互
查看>>
给孩子增加学习生物的兴趣,买了个显微镜
查看>>
代码风格 2012/10/12
查看>>
Source Code Pro - 来自 Adobe的最佳编程字体!
查看>>
Uva 11300 Spreading the Wealth
查看>>
深度拷贝
查看>>
远程桌面时自动输入“c“的解决方法
查看>>
谨慎的沉默就是精明的回避
查看>>