最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Toggle css class in React - Stack Overflow

programmeradmin7浏览0评论

How to toggle a presence of css class on element in React with boolean value? In Angular 2 I could just do [class.red]="isRed". How to do familiar thing in React?

How to toggle a presence of css class on element in React with boolean value? In Angular 2 I could just do [class.red]="isRed". How to do familiar thing in React?

Share Improve this question asked Jun 27, 2016 at 4:13 Tuomas ToivonenTuomas Toivonen 23.5k51 gold badges144 silver badges243 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 12

In React, elements get their classes using a syntax like this

<div className="some-class" />

Note however that JSX allows attribute values to be JS expressions

<div className={"some-" + "class"} />

Which can be used generate a class name based on some logic, such as your boolean check

<div className={isRed ? "red" : null} />

If your element should also has some classes that don't depend on a variable and should always be applied, this can be achieved with

<div className={"my-class " + (isRed ? "red" : null)} />

At which point it seems to start to get messy and it's probably better to extract that into a local variable instead

var className = "my-class " + (isRed ? "red" : null);
<div className={className} />

React itself doesn't provide an utility function to deal with this, however the boolean pattern is so mon, there is a package called classnames that will turn the above into

var className = cx("my-class", { "red": isRed });
<div className={className} />

You can use state for that.

<div className={this.state.styleClass}></div>

On any event you can change the class like

handleClick: function(){
    this.setState({styleClass: 'red'})
}

Toggle css class in React

<div className={isRed && "red"}></div>

let isRed = true;
//result
<div class="red"></div>

let isRed = false or null or undefined or "" or 0;
//result
<div class=""></div>

if there is another class u may use

<div className={"element "+ (isRed ? "red":"")}></div>

or put result in varaiable

let modificator = isRed ? "red":"";
<div className={"element "+ modificator}></div>

the same with open/close classes

let modificator = isOpen ? "open" : "close";
<div className={"element "+ modificator}></div>

if you want to not render some element

{isShow && <div className="element"></div> }

It is mon practice ,using logic and ternary operators for that.

发布评论

评论列表(0)

  1. 暂无评论