Vue 不会为特定 API 请求呈现数据
Vue won't render data for specific API request
所以我有下一个组成部分:
<template>
<div class="home">
<div class="container" v-if="data" >
<Card v-for="result in data" :img="result.links[0]" :key="result.href"/>
</div>
</div>
</template>
<script>
import Card from "../components/Card";
import axios from "axios";
export default {
name: 'Home',
components: {Card},
data() {
return {
data: null,
}
},
created() {
axios.get('https://images-api.nasa.gov/search?q=mars').then(res => {
return res.data.collection.items
}).then(res => {
this.data = res;
})
}
}
我在渲染 Card 组件时遇到问题,因为我无法传递“img”属性,控制台显示“无法读取未定义的属性(读取‘0’)”错误,这很奇怪,因为我可以看到我的“数据” “属性 已经从 API 获得了正确的数据,但是当我尝试使用不同的查询参数(如“https://images-api.nasa] 从相同的 API 获取数据时。gov/search?q=jupiter" 一切正常。所以我不知道这可能是 Vue 内部问题还是 API 问题?
您可以稍微修改一下代码以确保 result.links 不是未定义的
<Card v-for="result in data" :img="getImageLink(result)" :key="result.href"/>
现在在你的方法中,
getImageLink(result) {
if (result.links) {
return result.links[0];
}
return null;
}
这将解决您的问题
所以我有下一个组成部分:
<template>
<div class="home">
<div class="container" v-if="data" >
<Card v-for="result in data" :img="result.links[0]" :key="result.href"/>
</div>
</div>
</template>
<script>
import Card from "../components/Card";
import axios from "axios";
export default {
name: 'Home',
components: {Card},
data() {
return {
data: null,
}
},
created() {
axios.get('https://images-api.nasa.gov/search?q=mars').then(res => {
return res.data.collection.items
}).then(res => {
this.data = res;
})
}
}
我在渲染 Card 组件时遇到问题,因为我无法传递“img”属性,控制台显示“无法读取未定义的属性(读取‘0’)”错误,这很奇怪,因为我可以看到我的“数据” “属性 已经从 API 获得了正确的数据,但是当我尝试使用不同的查询参数(如“https://images-api.nasa] 从相同的 API 获取数据时。gov/search?q=jupiter" 一切正常。所以我不知道这可能是 Vue 内部问题还是 API 问题?
您可以稍微修改一下代码以确保 result.links 不是未定义的
<Card v-for="result in data" :img="getImageLink(result)" :key="result.href"/>
现在在你的方法中,
getImageLink(result) {
if (result.links) {
return result.links[0];
}
return null;
}
这将解决您的问题