asyncData 中出现意外的 setTimeout (nuxt/no-timing-in-fetch-data)

Unexpected setTimeout in asyncData (nuxt/no-timing-in-fetch-data)

我正在尝试 运行 来自我的 pages/posts/index.vue 页面的代码。但我不断收到一条错误消息:异步数据中出现意外的 setTimeout'。我不知道那是什么意思。有人可以帮忙吗?我还需要其他插件吗?

<template>
  <div class="postspage">
   <section class="introduction">
   </section>
   <PostList :posts="loadedPosts" />
  </div>
</template>

<script>
import PostList from '@/components/Posts/PostList'

export default {

middleware: 'log',

components: {
PostList
},

asyncData (context, callback) {
setTimeout(() => {
callback(null, {
  loadedPosts: [
    {
      id: 'Post1',
      title: '1st post',
      previewText: 'This is post number 1',
      thumbnail: 'https://www.pexels.com/video/5899816/'
    },
    {
      id: 'Post2',
      title: '2nd post',
      previewText: 'This post number 2',
      thumbnail: 'https://www.pexels.com/video/5899816/'
    }
  ]
  })
 }, 1500)
},

 created () {}

}

预计 asyncData 将直接 return 数据,并且该数据将合并到组件(页面)中 data。您不需要设置计时器或调用回调。尝试这样的事情:

async asyncData () {
  return {
    loadedPosts: [
      {
        id: 'Post1',
        title: '1st post',
        previewText: 'This is post number 1',
        thumbnail: 'https://www.pexels.com/video/5899816/'
      },
      {
        id: 'Post2',
        title: '2nd post',
        previewText: 'This post number 2',
        thumbnail: 'https://www.pexels.com/video/5899816/'
      }
    ]
  }
},

您 return 来自 asyncData 的对象,然后可以使用组件方法中其他地方的 this.loadedPosts 或 HTML 模板中的双花括号访问您的数据,例如 <div>{{ loadedPosts }}</div>.

如果您需要从 API 中 获取 数据,您可以 await API 响应的结果。 Nuxt 文档对此有更多详细信息: https://nuxtjs.org/docs/2.x/features/data-fetching/

谢谢 Collin-Allen,我刚刚试过了,它似乎也能正常工作(只是删除了 setTimeout 函数:

asyncData (context, callback) {
callback(null, {
  loadedPosts: [
    {
      id: '1',
      title: 'First Post',
      previewText: 'This is my first post!',
      thumbnail: 'https://www.pexels.com/video/5899816/'
    },
    {
      id: '2',
      title: 'Second Post',
      previewText: 'This is my second post!',
      thumbnail: 'https://www.pexels.com/video/5899816/'
    }
  ]
}, 1500)

},