我正在为此项目使用Nuxt js。我在这里使用功能 asyncData以在服务器端获取数据。这就是为什么我不能将数据设置为“数据”的原因,因为所有数据都是在服务器上提取的。但是我在控制台中出现错误“属性或方法“ posts”未在实例上定义,但在渲染过程中被引用...”。
<template>
<div>
<v-list v-for="item in posts">
<v-list-tile :key="item.id">
<v-list-tile-content>
<h1>{{item.title}}</h1>
</v-list-tile-content>
</v-list-tile>
</v-list>
</div>
</template>
export default {
asyncData() {
return axios.get('https://jsonplaceholder.typicode.com/posts')
.then(response => {
return {posts: response.data}
})
}
}
由于文档https://nuxtjs.org/guide/async-data,我只需要使用“帖子”
答案 0 :(得分:1)
正如前面提到的,asyncData
钩子在组件中不可用,而只能在页面中使用。
在 Nuxt JS 2.12 中虽然引入了一个新的 fetch
钩子,它可以解决这个问题:https://nuxtjs.org/docs/2.x/features/data-fetching#async-data-in-components
<script>
export default {
data() {
return {
posts: []
}
},
async fetch() {
this.posts = await axios.get('https://jsonplaceholder.typicode.com/posts').then(response =>
response.data
)
}
}
</script>
答案 1 :(得分:0)
asyncData()
方法仅在pages中有效。
摘自nuxt.js官方文档:
要解决此限制,您有两个基本选择: