ES6 拓展运算符不能在 问号表达式后面用?

发布于 2022-09-07 11:25:17 字数 470 浏览 10 评论 0

用了css moudules,所以遇到了需要多个css类的问题
如下

 <div className={this.state.showall?...[style.TopBannerBox,style.actAll]:style.TopBannerBox}>

不能这样用吗?这样就报错了。

之前用的下面这种

style.TopBannerBox + ' ' + style.actAll

这种方式不利于代码整洁,看着很难受。

想明白了,不能用拓展运算符,拓展运算符 编译出来的是 style.TopBannerBox,style.actAll 所以会报错,只是console.log()出来的时候会自动将','分隔为多个值,看起来像 style.TopBannerBox style.actAll ,学艺不精学艺不精!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ぺ禁宫浮华殁 2022-09-14 11:25:17

可以试下这样写:

className={showall ? [styles.TopBannerBox, styles.actAll].join(' ') : styles.TopBannerBox}

但是在'css modules'中,不推荐这种写法,它推荐的是每个元素只有一个'className',不叠加.这里的情况,可以添加一个类,如'actBox',然后合并上述的两个类:
css-modules composition

// styles.css
.actBox{
 composes : TopBannerBox actAll;
}
className={showall ? styles.actBox : styles.TopBannerBox}
救星 2022-09-14 11:25:17

这样呢

<div className={this.state.showall?(...[style.TopBannerBox,style.actAll]):style.TopBannerBox}>
败给现实 2022-09-14 11:25:17

换种思路可以放前面啊
<div className={...this.state.showall?[style.TopBannerBox,style.actAll]:[style.TopBannerBox]}>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文