开发者问题收集

Vue.JS - Api 请求 - 未捕获(在承诺中)TypeError:无法读取未定义的属性(读取“quote”)

2022-05-30
2760
<template>

    <article class="message is-warning">
        <div class="message-header">
            <span>Code Quotes</span>
        </div>
        <div class="message-body">
                <span v-html="fetchedQuotes.data.quote"></span>
                <span>{{fetchedQuotes.data.author}}</span> 
        </div>
    </article>

</template>

<script>
    export default {
        data(){
            return {
               
                fetchedQuotes: [],
                contentUrl: "https://apiurl.tld/"
            };
        },
        mounted() {
            this.getQuotes(this.contentUrl, "quotes");
            
        },
        methods: {
            async getQuotes(url, collection) {
                try {
                    
                    let response = await fetch(url + collection+"/"+Math.ceil(Math.random()*6));
                    this.fetchedQuotes = await response.json();
                } catch (error) {
                    console.log(error);
                }
            }
        }
    };
</script>

我正尝试从 Directus 项目 API 中随机获取报价。 但此代码一直显示错误 :

Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'quote').

我尝试了几种不同的解决方案,但现在我陷入困境,需要帮助找出是什么阻止了此代码运行。

如能提供任何帮助,我们将不胜感激。

1个回答

问题是,您尝试在提取 fetchedQuotes.data.quote 之前对其进行访问。要解决此问题,请检查您的 html 标记中的 fetchedQuotes 是否为空

<span v-html="fetchedQuotes.data.quote" v-if="fetchedQuotes.length != 0"></span>
Azamat
2022-05-31