我已将此状态设置为默认状态:
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?
答案 0 :(得分:0)
没有,但是如果您希望不抛出错误,则可以为questions
使用后备值。然后,代码中的其他内容将无法正常工作。跟踪导致questions
的整个数据流,您可能会得到答案
(questions || []).map