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

问题描述 投票:0回答:1

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

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尽管它的默认值?

reactjs
1个回答
0
投票

它没有,但是如果你想要不抛出错误,你可以使用questions的后备值。你的代码中的其他东西不起作用。跟踪导致questions的整个数据流,您可能会得到答案

(questions || []).map
© www.soinside.com 2019 - 2024. All rights reserved.