更改期间React状态属性是否设置为undefined?

时间:2018-09-09 08:30:24

标签: reactjs

我已将此状态设置为默认状态:

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>
))}

问题是,尽管已经设置了默认值,但我仍然得到一个未定义答案的错误。我记录了它,看到了:

enter image description here

几乎是正确的,第一个日志应为默认值,第二个应为这四个清晰的字符串,第三个应为这四个句子。我想知道为什么answers数组尽管默认值却突然设置为undefined?

1 个答案:

答案 0 :(得分:0)

没有,但是如果您希望不抛出错误,则可以为questions使用后备值。然后,代码中的其他内容将无法正常工作。跟踪导致questions的整个数据流,您可能会得到答案

(questions || []).map