84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
我想显示与相关答案的问题。不幸的是,如果我加载一个单独的QuestionPage,它不会显示所有的答案。这是因为我在./components/Answers.vue组件中发现了一个逻辑错误。
QuestionPage
./components/Answers.vue
我认为问题出在我的fetch()函数中,其中的端点链接未定义(控制台错误的截图https://prnt.sc/198ebdx)
fetch()
这个Answers组件在QuestionPage中使用,我认为Question组件没有正确引用Answer组件。
Question
Answer
在QuestionPage.vue组件中,您的应该有一个v-if="question.id"来防止加载组件,以防data()函数中定义的question不存在。
QuestionPage.vue
v-if="question.id"
data()
question
解释
控制台中报错是因为在您的HTTP请求中使用了一个未定义的变量。
查看您的Answers.vue组件,在created函数中有以下代码:
Answers.vue
created
created () { this.fetch(`/questions/${this.questionId}/answers`); },
这个问题ID是指同一个Answers.vue中的Props / Data结构:
export default { props: ['question'], mixins: [highlight], data () { return { questionId: this.question.id, count: this.question.answers_count, answers: [], answerIds: [], nextUrl: null } } }
在您的QuestionPage.vue组件中,您将question作为prop传递给Answers.vue组件。然而,这个变量可能是未定义的。您应该先检查这个函数的结果
mounted () { this.fetchQuestion (); // alert(this.question) // console.log(this.question) }, methods: { fetchQuestion () { axios.get(`/questions/${this.slug}`).then(({data})=> { this.question = data.data }).catch(error => console.log(error)) } }
如果该函数没有结果,请确保您的slugprop是正确的,并由后端处理。
slug
在
QuestionPage.vue
组件中,您的
应该有一个v-if="question.id"
来防止加载组件,以防data()
函数中定义的question
不存在。解释
控制台中报错是因为在您的HTTP请求中使用了一个未定义的变量。
查看您的
Answers.vue
组件,在created
函数中有以下代码:这个问题ID是指同一个
Answers.vue
中的Props / Data结构:在您的
QuestionPage.vue
组件中,您将question
作为prop传递给Answers.vue
组件。然而,这个变量可能是未定义的。您应该先检查这个函数的结果如果该函数没有结果,请确保您的
slug
prop是正确的,并由后端处理。