React-classnames库

今天在项目中看到了大佬引入了classnames,之前没用过所以去搜了搜,感觉还真的是挺好用的,搜到一篇很不错的文章,跟原创作者交流了一下就转载过来了!

下面废话不多说,我们直接来看文章吧

首先我们我们来看这个名字classnames一看就知道是跟className类名有关的,实际上也确实是这样,

那我们为什么要用这个呢

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

import style from

<div className={style.class1 style.class2}

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

引入classnames库,安装:

使用:
import classnames from ''

<div className=<span style="color: #000000">classnames({
<span style="color: #008000">'class1': true,'class2': true<span style="color: #000000">
)>

其他用法:
classNames('foo','bar'); 'foo bar' classNames('foo',{ bar: }); 'foo bar' classNames({ 'foo-bar': }); 'foo-bar' classNames({ 'foo-bar': }); '' classNames({ foo: },{ bar: }); 'foo bar' classNames({ foo: ,bar: }); 'foo bar'

<span style="color: #008000">//<span style="color: #008000"> lots of arguments of various types
classNames('foo',{ bar: <span style="color: #0000ff">true,duck: <span style="color: #0000ff">false },'baz',{ quux: <span style="color: #0000ff">true }); <span style="color: #008000">//<span style="color: #008000"> => 'foo bar baz quux'

<span style="color: #008000">//<span style="color: #008000"> other falsy values are just ignored
classNames(<span style="color: #0000ff">null,<span style="color: #0000ff">false,'bar',undefined,1,{ baz: <span style="color: #0000ff">null },''); <span style="color: #008000">//<span style="color: #008000"> => 'bar 1'

    传入数组对象:

arr = ['b',{ c: ,d: 'a',arr); 'a b c'

   传入动态class

let buttonType = 'primary'-${buttonType}`]: });

Button = btnClass = 'btn' (.state.isPressed) btnClass += ' btn-pressed' (.state.isHovered) btnClass += ' btn-over' ;

classNames = require('classnames'<span style="color: #0000ff">var Button =<span style="color: #000000"> React.createClass({
<span style="color: #008000">//<span style="color: #008000"> ...
<span style="color: #000000"> render () {
<span style="color: #0000ff">var btnClass =<span style="color: #000000"> classNames({
btn: <span style="color: #0000ff">true<span style="color: #000000">,'btn-pressed': <span style="color: #0000ff">this<span style="color: #000000">.state.isPressed,'btn-over': !<span style="color: #0000ff">this.state.isPressed && <span style="color: #0000ff">this<span style="color: #000000">.state.isHovered
});
<span style="color: #0000ff">return ;
<span style="color: #000000"> }
});

又学到了新东西,美滋滋啊,老铁们,我告辞了啊,下一篇文章见

 

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...