我正在尝试使用Vue从Express API输出单个帖子。
问题是返回的对象/数组(post.value)没有显示我在模板中声明的值(post.title和post.body)。
任何帮助都将不胜感激。
<template>
<div v-if="post">
<h2>{{ post.title }}</h2>
<p>{{ post.body }}</p>
</div>
</template>
<script>
import axios from 'axios'
import { ref } from 'vue'
import { useRoute } from 'vue-router'
export default {
name: 'BlogPostView',
setup() {
const post = ref([])
const route = useRoute()
const error = ref('')
const load = async (id) => {
try {
await axios.get(`http://localhost:5000/api/posts/${id}`)
.then((response) => {
post.value = response.data
console.log(post.value)
console.log(response.data)
})
} catch(err) {
error.value = err.message
}
}
load(route.params.id)
return { post, error }
}
}
</script>
仅供参考:
console.log(params.value)没有得到任何错误,并输出以下内容:
Proxy {0: {…}}[[Handler]]: Object[[Target]]: Array(1)[[IsRevoked]]: false
UPDATE我可以输出变量,但是需要v-for循环的帮助。只是想知道是否有另一种不使用循环的输出方式。我可以使用Vue + firebase使它工作,但是不能在这个堆栈上。
1条答案
按热度按时间3pmvbmvn1#
由于您的API返回一个包含一个post的数组,因此您可以只存储post,而不存储其周围的数组。