我已将此状态设置为默认值:
this.state = {
topic: ' ',
questions: [],
answers: [[' ']],
types: [' '],
};
然后我设置一个AJAX调用,并组织所有内容,然后填充。
loadBody() {
axios.get(`/api/getSurveyBody/${this.props.match.params.id}`)
.then((result) => {
this.loadQuestions(result.data);
this.loadAnswers(result.data);
this.loadTypes(result.data);
})
.then((error) => {
console.log(error);
});
}
loadAnswers(array) {
const answers = array.map(element => ([
element.answer1,
element.answer2,
element.answer3,
element.answer4,
]));
this.setState({ answers });
}
稍后我传递这些值并在另一个组件中读取它们:
{questions.map((element, index, array) => (
<div className="question" key={keyIndex(array, index)[index].id}>
<h3>
{element}
</h3>
{ answers[index] } //Here is console.log() showed on the image
</div>
))}
这个问题是,我有一个错误,答案是未定义的,尽管它已经设置了默认值。我记录下来了,看到了这个:
这几乎是正确的,第一个日志应该是默认的,第二个应该是这四个明确的字符串,第三个是这四个句子。我想知道为什么它看起来像answers
数组突然设置为undefined尽管它的默认值?
它没有,但是如果你想要不抛出错误,你可以使用questions
的后备值。你的代码中的其他东西不起作用。跟踪导致questions
的整个数据流,您可能会得到答案
(questions || []).map