1. ホーム
  2. reactjs

[解決済み] React JSXのforEach()でHTMLが出力されない

2022-03-07 03:37:05

質問

Reactで出力したいオブジェクトがあります。

question = {
    text: "Is this a good question?",
    answers: [
       "Yes",
       "No",
       "I don't know"
    ]
} 

と私のリアクトコンポーネント(切り捨て)、別のコンポーネントです。

class QuestionSet extends Component {
render(){ 
    <div className="container">
       <h1>{this.props.question.text}</h1>
       {this.props.question.answers.forEach(answer => {     
           console.log("Entered");  //This does ifre                       
           <Answer answer={answer} />   //THIS DOES NOT WORK 
        })}
}

export default QuestionSet;

上のスニピットでわかるように、Answersというコンポーネントの配列をpropsに挿入しようとしていますが、イテレートはされるものの、HTMLには出力されないのです。

どうすればいいですか?

に要素の配列を渡す必要があります。 jsx . 問題は forEach は何も返しません(つまり、これは undefined ) . なので map なぜなら map は配列を返します。

class QuestionSet extends Component {
render(){ 
    <div className="container">
       <h1>{this.props.question.text}</h1>
       {this.props.question.answers.map((answer, i) => {     
           console.log("Entered");                 
           // Return the element. Also pass key     
           return (<Answer key={answer} answer={answer} />) 
        })}
}

export default QuestionSet;