首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >父组件未从Nuxt应用程序中的子组件获取数据

父组件未从Nuxt应用程序中的子组件获取数据
EN

Stack Overflow用户
提问于 2021-07-23 04:49:36
回答 1查看 40关注 0票数 0

这快把我逼疯了,所以我希望任何人都能帮助我。

我用@ Nuxt /content做了一个nuxt应用,我正在使用Netlify-CMS来创建内容。这一切似乎都运行得很好。然而,我试图显示一个组件,其中包含我拥有的MD文件的循环,但在index.vue中没有显示任何循环。

我知道(一点)关于道具和$emit的知识,但是因为我没有触发一个事件,所以这个似乎不起作用。

组件代码:

代码语言:javascript
复制
<template>
  <section>
    <h1>Releases</h1>
    <li v-for="release of rfhreleases" :key="release.slug">
      <h2>{{ release.artist }}</h2>
    </li>
  </section>
</template>

<script>
export default {
  components: {},
  async asyncData({ $content, params }) {
    const rfhreleases = await $content('releases', params.slug)
      .only(['artist'])
      .sortBy('createdAt', 'asc')
      .fetch()

    return {
      rfhreleases,
    }
  },
}
</script>

和index.vue代码:

代码语言:javascript
复制
<template>
  <div>
    <Hero />
    <Releases />
    <About />
    <Contact />
  </div>
</template>

<script>
export default {
  head() {
    return {
      script: [
        { src: 'https://identity.netlify.com/v1/netlify-identity-widget.js' },
      ],
    }
  },
}
</script>

如果我将组件代码作为index.vue的一部分,一切都会正常工作,但我希望避免这种情况,这就是为什么我尝试将循环放在组件中的原因。

EN

回答 1

Stack Overflow用户

发布于 2021-07-23 13:44:02

如Nuxt文档中所述:

此挂钩只能放置在页面组件上。

这意味着asyncData只适用于pages/文件夹下的组件。

您有几个选项:

  1. 您可以使用fetch。它是另一个异步钩子,但它可以从任何组件调用。它不会像asyncData那样阻塞渲染,因此组件将首先使用空数据实例化。
  2. 您使用asyncData从页面获取数据,然后将结果作为道具传递给组件

代码语言:javascript
复制
<template>
  <div>
    <Hero />
    <Releases :releases="rfhreleases" />
    <About />
    <Contact />
  </div>
</template>

<script>
export default {
  async asyncData({ $content, params }) {
    const rfhreleases = await $content('releases', params.slug)
      .only(['artist'])
      .sortBy('createdAt', 'asc')
      .fetch()

    return {
      rfhreleases,
    }
  },
}
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68491342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档