求助:如何在Next.js中实现该条件式className写法?
Next.js 中 className 动态写法的适配方案
原生模板字符串写法(排查语法问题)
你给出的模板字符串写法本身在Next.js里是支持的,大概率是细节问题导致不生效,先检查这几点:- 确认
playMarquee是布尔变量,只有它为true时才会添加animate类 - 检查反引号、引号都是英文符号,别用中文引号
更稳妥的写法可以用三元运算符替代&&,避免假值(比如0、空字符串)带来的无效类名:
<div className={`banner-row marquee ${playMarquee ? "animate" : ""}`}> {/* 组件内容 */} </div>- 确认
用 clsx 库简化动态类名(推荐)
处理多动态类名时,用clsx更清晰还能自动过滤无效类名:- 先安装依赖:
npm install clsx # 或者 yarn add clsx- 导入后使用:
import clsx from 'clsx'; <div className={clsx("banner-row marquee", playMarquee && "animate")}> {/* 组件内容 */} </div>若使用 Tailwind CSS
项目用Tailwind的话,推荐结合tailwind-merge做类名合并(通常封装成cn工具函数):import { cn } from '@/lib/utils'; // 假设你在项目里定义了这个工具函数 <div className={cn("banner-row marquee", playMarquee && "animate")}> {/* 组件内容 */} </div>这个组合既能管理动态类名,还能解决Tailwind类名的优先级冲突问题。
内容的提问来源于stack exchange,提问作者cori6
相关产品推荐
相关产品推荐

