【问题标题】:Contentful Tags not rendering on page内容标签未在页面上呈现
【发布时间】:2021-04-24 17:28:14
【问题描述】:

我正在创建文章卡片,我希望在卡片中呈现标签。我正在使用 NextJS 和 GraphQLClient 从 Contentful 中获取数据。一切都会被渲染,但标签不会。

这是我的查询:

export async function getArticles() {
  const articlesQuery = gql`
    {
      articleCollection {
        items {
          title
          slug
          excerpt
          date
          contentfulMetadata {
            tags {
              name
              id
            }
          }
          featuredImage {
            title
            url
            width
            height
          }
        }
      }
    }
  `;
  return graphQLClient.request(articlesQuery);
}

这是使用 GraphiQL 的结果:

这是我的文章页面,我希望标签出现在文章明信片上:

export async function getStaticProps() {
  const articles = await getArticles();

  return {
    props: {
      articles: articles.articleCollection.items,
    },
  };
}

export default function ArticlesPage({ articles }) {
  return (
    <Wrapper>
      <div>
        <div>
          <div/>
        </div>
        <div>
          <div>
            {articles.map((article) => (
              <Link key={article.slug} href={`/articles/${article.slug}`}>
                <div key={article.title}>
                  <div>
                    <img
                      src={article.featuredImage.url}
                      alt=""
                    />
                  </div>
                  <div>
                    <div>
                      <p>
                        <a href={article.contentfulMetadata.tags.name}>
                          {article.contentfulMetadata.tags.name}
                        </a>
                      </p>
                      <a>
                        <p>
                          {article.title}
                        </p>
                        <p>
                          {article.excerpt}
                        </p>
                      </a>
                    </div>
                    <div>
                      <div>
                      </div>
                      <div>
                        <p>
                        </p>
                      </div>
                    </div>
                  </div>
                </div>
              </Link>
            ))}
          </div>
        </div>
      </div>
    </Wrapper>
  );
}

你能帮我找出我做错了什么吗?

【问题讨论】:

    标签: graphql next.js contentful


    【解决方案1】:

    这里有内容的 DevRel。 ?

    contentfulMetadata.tags 是一个数组。提供的 sn-p 模板假定 tags 是一个对象。

    尝试遍历数组并分别渲染每个标签。

    article.contentfulMetadata.tags.map((tag) => {
      return <a href={tag.name}>
        {tag.name}
      </a>;
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-08
      • 2011-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      相关资源
      最近更新 更多