Я следую этому руководству. https://thewikihow.com/video_4deVCNJq3qc
ниже мой код для QuestionBox.vue
<template>
<div>
{{ currentQuestion.question}}
</div>
</template>
<script>
export default {
props: {
currentQuestion: Object
}
}
</script>
Ниже приведен код для App.vue
<template>
<div>
<Header />
<QuestionBox
:currentQuestion = "questions[index]"
/>
</div>
</template>
<script>
import Header from './components/Header.vue'
import QuestionBox from './components/QuestionBox.vue'
export default {
name: 'app',
components: {
Header,
QuestionBox
},
data(){
return {
questions:[],
index:0
}
},
mounted: function(){
fetch('https://opentdb.com/api.php?amount=4&type=multiple',{
method: 'get'
})
.then((response) => {
return response.json()
})
.then((jsonData) => {
this.questions = jsonData.results
})
}
}
</script>
<style>
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
когда я компилирую код, это удалось, но я не получаю ожидаемого результата, который является вопросом индекса 0, вместо этого, когда я проверяю, я получаю ошибку Uncaught TypeError: $ props.currentQuestion is undefined.
Я застрял там 2 дня, что я делаю не так? Пожалуйста помоги. Заранее спасибо.

@bassxzero спасибо, вы правы, я добавил ваш код и теперь хорошо. но не могли бы вы объяснить, зачем мне это v-if? репетитор в учебнике не добавил этот код и работает нормально. Я новичок в vue. Спасибо. и как мне закрыть этот вопрос и дать вам ответ?





Добавьте v-if к тегу <div> в Questionbox.vue:
<template>
<div v-if = "currentQuestion">
{{ currentQuestion.question }}
</div>
</template>
Это предотвратит попытки Vue выполнить рендеринг до тех пор, пока в currentQuestion не появятся данные. Затем, когда currentQuestion станет правдивым, он будет отрендерен.
См. Также: https://stackoverflow.com/a/41052023/2073738
Добавьте v-if = "questions[index]" на ваш <QuestionBox>.
Вы извлекаете данные для this.questions в смонтированном хуке, поэтому есть период, когда массив questions пуст. Итак, вы передаете questions[index] или questions[0] в <QuestionBox> в качестве опоры. В это время questions[0] оценивается как undefined. Итак, в своем QuestionBox вы пытаетесь получить доступ к свойству question из undefined. {{ currentQuestion.question}} Что дает вам ошибку.
<template>
<div>
<Header />
<QuestionBox
v-if = "questions[index]"
:currentQuestion = "questions[index]"
/>
</div>
</template>
вау, большое спасибо за объяснение. теперь он работает нормально.
Вы также можете изменить начальное значение questions на questions:[{}] в App.vue
Попробуйте добавить
v-if = "questions[index]"на ваш<QuestionBox