css - 如何根据数组的长度更改 CSS className?
问题描述
我有一个带有博客的 Gatsby 项目,我正在将“相关文章”部分添加到博客文章中。如果读者正在阅读的文章具有相同标签的相关文章,我想在卡片中显示最多两篇相关文章,并带有文章链接。
我正在遍历一个包含.map
在 JSX 内部使用的相关文章的数组。有三种可能的结果:
- 没有相关文章,我什么也不显示
- 我将展示一篇相关文章,其中包含 CSS 类
styles.moreArticlesOne
- 我将展示两篇相关的文章,其中的 CSS 类
styles.moreArticlesTwo
我想根据数组中是否有一篇相关文章被映射或者是否有两篇相关文章被映射来更改 CSS 样式。
如何检查包含相关文章的数组的长度,如果有一篇文章,则添加一个 CSS 类,如果有两篇文章,如何添加另一个 CSS 类?
{
topTwoArticles.map((article, index) => {
let articleNameForURL = article[1].split(" ").join("-").toLowerCase();
articleNameForURL.split(",").join("");
if (article[5] !== ghostIDOfThisArticle) {
return (
// I am trying to use a ternary to apply the CSS classes but it isn't working
<Link
to={`/blog/${articleNameForURL}`}
className={
topTwoArticles.length === 2
? styles.moreArticlesTwo
: styles.moreArticlesOne
}
>
<div
className={styles.thumb + " " + styles.cover}
style={{ backgroundImage: `url(${article[0]})` }}
></div>
<div className={styles.info}>
<p>{moment(article[4]).format("MM/DD/YYYY")}</p>
<h3>{article[1]}</h3>
</div>
<div className={styles.button}>
{index === 0 ? (
<FontAwesomeIcon icon="arrow-alt-circle-left" />
) : (
<FontAwesomeIcon icon="arrow-alt-circle-right" />
)}
</div>
<span className={styles.overlay}></span>
</Link>
);
}
});
}
如您所见,我尝试使用三元运算符但无济于事。className={topTwoArticles.length === 2 ? styles.moreArticlesTwo : styles.moreArticlesOne}
不起作用。
解决方案
推荐阅读
- crystal-lang - 如何获取文件的 atime 和 ctime (Crystal-lang)
- point-cloud-library - 比较两个点云相似度的度量
- django - 如何修复 Django 视图中的 UnboundLocalError
- javascript - 在 AWS Lambda 中,使用变量设置标头属性
- haskell - 非平衡二叉树
- c++ - 为什么我们应该导入#include
对于字符串数据类型而不是其他数据类型? - android - 太大的 react-native 发布 apk
- python - 无法解决“没有名为 Appium 的模块”错误
- jquery - 使用 jQuery 在 HTML 中显示错误消息
- android - 如何在 andorid 中创建类似 Facebook 评论部分的列表