无法在 Nuxt 组件中使用 axios 从 api 获取数据
Posted
技术标签:
【中文标题】无法在 Nuxt 组件中使用 axios 从 api 获取数据【英文标题】:Can't get data from api with axios in Nuxt components 【发布时间】:2021-12-15 02:53:48 【问题描述】:<template>
<div id="post">
<p> data </p>
</div>
</template>
<script>
export default
data ()
return
data: ''
,
async asyncData($axios)
const res = await $axios.get('/v1/posts')
.catch( error =>
console.log("response error", error)
return false
)
return
data: res
,
</script>
一开始,我尝试使用上面的代码获取数据,它在 pages/post.vue 中有效,但在 components/post.vue 中无效。 然后,我意识到我不能在nuxt组件中使用asyncData并更改代码如下。
<template>
<div id="post">
<p> data </p>
</div>
</template>
<script>
export default
data ()
return
data: ''
,
mounted ()
this.asyncData()
,
asyncData()
await axios.get('/v1/posts')
.then(res =>
this.data = res.data
)
,
</script>
然后,我收到一个语法错误“意外的保留字 'await'”。 Nuxt组件中如何通过api获取数据?
====================================
我阅读了https://nuxtjs.org/docs/features/data-fetching#accessing-the-fetch-state 并将代码更改如下。
<script>
export default
data ()
return
data: ''
,
async fetch()
this.data = await fetch('/v1/posts')
.then(res => res.json())
,
</script>
现在,我遇到了另一个错误“fetch() 中的错误:SyntaxError: Unexpected token
【问题讨论】:
【参考方案1】:此代码有效。
<script>
export default
data ()
return
data: '',
,
async fetch()
const res = await this.$axios.get('/v1/posts')
this.data = res.data
,
</script>
【讨论】:
【参考方案2】:很高兴找到解决您问题的方法。
如果你不想事后写.data
,你甚至可以直接使用this.$axios.$get
。
【讨论】:
以上是关于无法在 Nuxt 组件中使用 axios 从 api 获取数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在(子)组件上使用 Axios 调用 API 并将结果呈现在 Nuxt 中的 Page(父)组件上?
Tabulator + Nuxt.js:如何在回调中使用 axios?
带有 Axios 的 Nuxt 在页面加载时不会从 API 获取数据