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

javascript - Combine conditional with static class NextJS - Stack Overflow

programmeradmin1浏览0评论

In NextJS I'm trying to apply both a static CSS-class and a conditional class to an element. Separated from each other I can make both work, but when bining them it will result in an unexpected error.

# This will work
<span className="font-medium">{message}</span>

# This will work too
<span className={status ? "bg-green-600":"bg-orange-600"}>{message}</span>

In Visual Studio the following snippet will give an error ',' expected.ts(1005)

# This (where I'm trying to apply *both* classes to the same element) won't work
<span className={"font-medium" + {status ? "bg-green-600":"bg-orange-600"}}>{message}</span>

Ignoring that will give following error:

Error: 
  x An object member cannot be declared optional

In NextJS I'm trying to apply both a static CSS-class and a conditional class to an element. Separated from each other I can make both work, but when bining them it will result in an unexpected error.

# This will work
<span className="font-medium">{message}</span>

# This will work too
<span className={status ? "bg-green-600":"bg-orange-600"}>{message}</span>

In Visual Studio the following snippet will give an error ',' expected.ts(1005)

# This (where I'm trying to apply *both* classes to the same element) won't work
<span className={"font-medium" + {status ? "bg-green-600":"bg-orange-600"}}>{message}</span>

Ignoring that will give following error:

Error: 
  x An object member cannot be declared optional
Share Improve this question edited Jul 18, 2022 at 18:30 Berendschot asked Jul 18, 2022 at 18:14 BerendschotBerendschot 3,1242 gold badges24 silver badges45 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 5

You need a space after font-medium, because it will be interpreted as a single class otherwise

<span className={"font-medium " + status ? "bg-green-600":"bg-orange-600"}>{message}</span>

And with template literals :

<span className={'font-medium ${status ? "bg-green-600" : "bg-orange-600" }'}>{message}</span>

(Please note it's `and not ' here)

In this type of cases, dont forget to debug by inspecting the element and checking the classes

You can also use backtick (`) as an alternative like this

<span className=`font-medium ${status ? 'bg-green-600' : 'bg-orange-600' `}>{message}</span>
发布评论

评论列表(0)

  1. 暂无评论