上一篇中,我們完成了一個簡單的Index頁面。今天,我們再加一些功能:1)在文章中設定是否為草稿,若是,則index不顯示,這可以透過GraphQL的filter實現;2)為文章加入日期,讓index可以按日期以倒序排列文章,這可以透過GraphQL的sort實現。
將連結列表改為ul顯示
<ul>
{data.allMarkdownRemark.edges.map(post => (
  <li>
    <Link
      key={post.node.id} 
      to={post.node.frontmatter.path}>
      {post.node.frontmatter.title}
    </Link>
  </li>
))}
</ul>
為兩篇blog文章加入新frontmatter:
---
path: '/blog-post-1'
title: 'My post'
draft: false
date: "2018-10-22"
---
修改首頁的index.js當中的GraphQL查詢,先加入前面新增的frontmatter(draft和date)。再在limit後之後加入filter和sort:
export const pageQuery = graphql`
  query IndexQuery {  
    allMarkdownRemark(
      limit: 10 
      filter: { frontmatter: { draft: { eq: false } } }
      sort: {fields: frontmatter___date order: DESC}
    ) {
      edges {
        node {
          id
          frontmatter {
            title
            path
            draft
            date
          }
        }
      }
    }
  }
`
filter可以用條件限制查詢內容。
sort可以根據fields加order進行順序或倒序。
同步發表於: NodeJust.com