组件

<ContentList>

使用组件查询内容的最快方式。

<ContentList> 组件获取文档列表,并允许您使用 插槽 渲染它们。

获取路径默认为内容根目录 (/)。

可以为组件提供显式 路径

pages/index.vue
<template>
  <main>
    <ContentList path="/articles" v-slot="{ list }">
      <div v-for="article in list" :key="article._path">
        <h2>{{ article.title }}</h2>
        <p>{{ article.description }}</p>
      </div>
    </ContentList>
  </main>
</template>

道具

  • path: 要从内容源加载的内容的路径。
    • 类型: string
    • 默认值: '/'
  • query: 要传递给 <ContentQuery /> 组件的查询构建器参数对象。
    • 类型: QueryBuilderParams
    • 默认值: undefined

插槽

default 插槽可用于通过 v-slot="{ list }" 语法渲染内容

pages/index.vue
<template>
  <main>
    <ContentList path="/articles" v-slot="{ list }">
      <div v-for="article in list" :key="article._path">
        <h2>{{ article.title }}</h2>
        <p>{{ article.description }}</p>
      </div>
    </ContentList>
  </main>
</template>

not-found 插槽可在没有文档匹配查询时使用

pages/index.vue
<template>
  <main>
    <ContentList path="/articles">
      <template #default="{ list }">
        <!-- ...default slot -->
      </template>
      <template #not-found>
        <p>No articles found.</p>
      </template>
    </ContentList>
  </main>
</template>

查询示例

pages/index.vue
<script setup lang="ts">
import type { QueryBuilderParams } from '@nuxt/content/dist/runtime/types'
const query: QueryBuilderParams = { path: '/articles', where: [{ layout: 'article' }], limit: 5, sort: [{ date: -1 }] }
</script>

<template>
  <main>
    <ContentList :query="query" v-slot="{ list }">
      <div v-for="article in list" :key="article._path">
        <h2>{{ article.title }}</h2>
        <p>{{ article.description }}</p>
      </div>
    </ContentList>
  </main>
</template>