javascript - 在 Nuxt 组件中访问 axios 返回的数组以循环
问题描述
我正在尝试使用 Nuxt 构建 SPA 和静态站点,虽然我了解从 API 获取数据并在页面本身的 Vue 中循环遍历数据的概念,但我正在努力解决如何使用组件来做到这一点。在我的示例中,我试图从 API 中获取帖子,并简单地列出所有帖子及其类型和标题。我想稍后变得更复杂,但想先了解基本概念。如何从 index.vue 中获取“帖子”数据。
我的 index.vue 文件:
<template>
<div>
<navbar />
<logo />
<ul>
<list /> // want the posts to be looped in this component
</ul>
</div>
</template>
<script>
import Navbar from '~/components/Navbar.vue'
import Logo from '~/components/Logo.vue'
import List from '~/components/List.vue'
export default {
components: {
Navbar,
Logo,
List
},
async asyncData ({ $axios }) {
const posts = await $axios.$get('https://www.myapi.com/posts')
return {
posts
}
}
}
</script>
<style>
</style>
这是我的列表组件:
<template>
<li v-for="post in posts">
{{ post.type }} - {{ post.title }}
</li>
</template>
<script>
// do i need props here??
</script>
解决方案
<template>
<div>
<navbar />
<logo />
<ul>
<list :post="post" /> // : is v-bind alias
</ul>
</div>
</template>
<script>
import Navbar from '~/components/Navbar.vue'
import Logo from '~/components/Logo.vue'
import List from '~/components/List.vue'
export default {
components: {
Navbar,
Logo,
List
},
async asyncData ({ $axios }) {
const posts = await $axios.$get('https://www.myapi.com/posts')
return {
posts
}
}
}
</script>
<style>
</style>
是的,您需要列表组件中的道具
<template>
<li v-for="post in posts">
{{ post.type }} - {{ post.title }}
</li>
</template>
<script>
export default {
...
props:[posts]
...
}
</script>
推荐阅读
- c++ - C ++如何计算文件中的等级范围
- python-3.x - RPI3B BME280 AttributeError:“模块”对象没有属性“load_calibration_params”
- ms-access-2016 - 在没有 VB 的 Microsoft Access 中显示查询结果
- angularjs - 如何在没有 $scope 的情况下在 Promise.all() 中更新 AngularJS (1.7.x) 中的 DOM?
- javascript - 当我将 v-model 属性添加到复选框时,Check-all 停止工作
- java - 从 java 8 切换到 java 10 后 CPU 使用率显示很高
- excel - 使用相邻列中的值进行条件连接和自动填充
- python - Scrapy:ItemLoader,有人可以向我解释这个错误吗?
- pointers - 不了解如何在 Rust 中访问向量的元素
- javascript - 我使用过滤器对吗?我不知道为什么这个解决方案有效