Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Loop inside of a loop, in React JSX

I am trying to render in react, jsx, a loop inside of a loop Like bellow:

{this.state.ans.map(function(item) {
    return (
        {this.state.quest.map(
            function(item1) {return (item1)}
        )}        
        {item}
    )
})}

This does not work any other suggestions

like image 563
Hugo Del-Negro Avatar asked Sep 09 '26 07:09

Hugo Del-Negro


2 Answers

You forgot the wrapping div in your first map statement:

render() {
  return (
    <div>
      {this.state.ans.map(item =>
        <div> // this div was missing
          {this.state.quest.map(quest => quest)}
          {item}
        </div>
      )}
    </div>
  )
}
like image 139
mersocarlin Avatar answered Sep 11 '26 02:09

mersocarlin


Try it like this:

render(){
    return (
        .
        .
        .
        {this.state.ans.map((item) => {
            return (
                <div>
                    {this.state.quest.map((item1) => { 
                           return (item1); 
                        }
                    )}        
                   {item}
               </div>
            );
        })}
    );
}

Basically the idea is that, you should return a single element - in my example a div (with the latest react version you don't have to). And moreover, use lambdas in order for this to reference the correct context.

If you do not use ES6, you can add the following statement at the beginning of the render method:

var that = this;

and use that afterwards with the function(){} syntax inside the return.

like image 26
Martin Shishkov Avatar answered Sep 11 '26 00:09

Martin Shishkov