React中如何动态更改style或className实现样式动态切换

网页开发过程中,我们经常需要动态更改样式来实现不同效果,比如当菜单项被点击时当前菜单添加高亮背景色等,那么如何在React中通过动态更改style或className实现效果切换呢,示例如下:

一、React动态更改style

如:通过style动态更改DIV背景图片,示例如下:

<div style={{backgroundImage:'url('+post.imageURL+')'}}></div>

或者, 多个样式组合:

<div style={{width:'200px',height:'200px',backgroundImage:'url('+post.imageURL+')'}}></div>

二、React动态更改className

如:我们有多个菜单项,通过在className中添加active样式来高亮当前菜单项,示例如下:

<ul className="menu">
    {catList.map((cat,index)=>{
        return (
            <li key={index} onClick={this.clickTab.bind(this,cat.catDir)} className={["menu-item", currentTab===cat.catDir?"active":""].join(' ')}>
                <span>{cat.catName}</span>
            </li>
        )
    })}
</ul>

或者使用ES6写法(推荐使用这种写法):

<ul className="menu">
    {catList.map((cat,index)=>{
        return (
            <li key={index} onClick={this.clickTab.bind(this,cat.catDir)} className={`menu-item ${currentTab===cat.catDir?'active':''}`}>
                <span>{cat.catName}</span>
            </li>
        )
    })}
</ul>

注意:这里大括号里边的单引号是反单引号,位置在键盘数字键“1”的左边,符号“~”的下方。

the end

热门文章