react class的写法

最近在学习react

写demo的时候 发现className有很多种写法 总结一下:

 1.默认写法

<div className="classA classB"></div>

2.动态class

1)单个动态class:

使用三元运算符:

<div className={this.state.editing ? 'active' : ''}></div>

或者使用逻辑运算符:

<div className={this.state.editing && 'active'}></div>

 

2)多个动态class:

<div className={['classA classB', this.state.editing ? 'active' : ''].join(' ')}></div>

className不支持数组语法,它的值必须是一个字符串。

因此写成数组形式注意要通过join('')将数组转为字符串

如果不使用join(' ')方法 最后得到的element如下:

<div class="classA classB,active"></div>

可以看到,中间多了个逗号,这样的class是无效的。

 

也可以使用ES6的模板字符串形式:

<div className={`classA classB ${this.state.editing ? 'active' : ''}`}></div>

 

以上为内联在模板里的写法,还可以写成函数形式:

getClassName() {
  const str = 'classA classB'
  return this.state.editing ? str + ' active' : str;
}
  
renderHello(){
  return <div className={ this.getClassName() }>hello world</div>
}

 

一般在业务逻辑比较复杂的场景下,建议使用函数方法。

 

转载于:https://www.cnblogs.com/yan89/p/11591933.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值