React 动态属性Style和动态类名className

24 篇文章 0 订阅
20 篇文章 0 订阅

React动态添加类名

已知变量:value = { class: ‘class1’, class2: ‘class2’, value: ‘你好’ },想得到结果如下:

<div class="class1 class2">你好</div>

实现方式如下:

// React实现  双类名/多类名

// 常用
// (字符串写法)
<div className={value.class + " " + value.class2}>{value.value}</div>
// (模板字符串写法)
<div className={`${value.class} ${value.class2}`}>{value.value}</div>

怎么通过表达式来动态添加类名呢?

已知变量:value = { class: ‘class1’, class2: ‘class2’, isShow : fasle },想得到结果如下:

// 当	 isShow = false 类名为 class1
<div class="class1">你好</div>

// 当	 isShow = true 类名为 class2
<div class="class2">你好</div>

实现方式如下:

<div className={这里面就可以写表达式} >你好</div>

// 动态判断添加单类名
// 这里三元的意思 如果isShow = true 类名就为class2   否则就是class1
<div className={value.isShow?value.class2:value.class1} >你好</div>


已有多类名,动态判断再添加类名

数组法

 原先已经有的类名 有  box 和 value.class2 后来需要条件判断的值是value.isShow 
 如果为true 添加类名 active
 如果为false就没有类名添加
 
 获取到的结果就应该是[value.class2,'box',"active"].join(' ')
  
 转换到的结果className = {value.class2 'box' "active"}
 
 <div className={[value.class2,'box',value.isShow?"active":''].join('')}>hello</div>

模板字符串法

这里就相当于写了一个字符串拼接上去,写法更通俗易懂
className="box classA active"
<div className={`box${classA}${value.isShow?"active":''}`}>hello</div>



React动态添加样式

比如我这个盒子动态添加一个 display:block | none 样式

// state 数据
	state={isShow:false}

isShow=true就显示
isShow=false就隐藏

// 模板字符串写法
<div style={{display:`${this.state.isShow?'block':'none'}`}}>hello</div>

// 表达式写法
<div style={{display:(this.state.isShow)?'block':'none'}}>hello</div>

如果我有多个样式呢?

// 模板字符串写法
<div style={{display:`${this.state.isShow?'block':'none'}`,background:'blue'}}>hello</div>

// 表达式写法
<div style={{display:(this.state.isShow)?'block':'none', color:"red"}}>hello</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值