You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

满足单个条件时,使用clsx添加两个className的正确语法是什么?

解决clsx同时添加多个条件类名的问题

你当前写法的问题在于:clsx的对象语法中,键必须是单个类名字符串,不能直接用数组作为对象的键,所以['stroke-black','text-transparent']这种写法不会被正确解析。

以下是几种可行的正确写法:

写法1:多类名空格拼接作为对象键

直接把需要的两个类名用空格连成一个字符串,作为对象的键,对应同一个条件:

export default function Navbar({}){
...
 return (
    <li key={link.label} 
        className={
                 clsx({ 
                    'stroke-black text-transparent': link.label === 'HelloAgain',
                  })
    }>
         <Link href='#'>
            {link.label}
         </Link>            
    </li>
   )
}

写法2:拆分独立键值对

把两个类名拆成两个独立的键值对,共用同一个判断条件:

export default function Navbar({}){
...
 return (
    <li key={link.label} 
        className={
                 clsx({ 
                    'stroke-black': link.label === 'HelloAgain',
                    'text-transparent': link.label === 'HelloAgain'
                  })
    }>
         <Link href='#'>
            {link.label}
         </Link>            
    </li>
   )
}

写法3:结合clsx的数组语法

利用clsx支持数组参数的特性,直接在条件满足时传入类名数组:

export default function Navbar({}){
...
 return (
    <li key={link.label} 
        className={
                 clsx(
                    link.label === 'HelloAgain' && ['stroke-black', 'text-transparent']
                 )
    }>
         <Link href='#'>
            {link.label}
         </Link>            
    </li>
   )
}

clsx本身支持混合传入字符串、对象、数组等多种参数类型,你可以根据自己的习惯选择最清晰的写法。

内容的提问来源于stack exchange,提问作者Herma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:19:58