I have a map()function that needs to display views based on a condition. I've looked at the React documentation on how to write conditions and this is how you can write a condition:
{if (loggedIn) ? (   // Hello! ) : (   // ByeBye! )}   Here's the link: https://facebook.github.io/react/docs/conditional-rendering.html#inline-if-else-with-conditional-operator
So, I tried to take that knowledge and implemant it in my React app. And it turned out like this:
render() {   return (     <div>       <div className="box">         {this.props.collection.ids           .filter(             id =>               // note: this is only passed when in top level of document               this.props.collection.documents[id][                 this.props.schema.foreignKey               ] === this.props.parentDocumentId           )           .map(id =>             {if (this.props.schema.collectionName.length < 0 ? (                <Expandable>                 <ObjectDisplay                   key={id}                   parentDocumentId={id}                   schema={schema[this.props.schema.collectionName]}                   value={this.props.collection.documents[id]}                 />               </Expandable>              ) : (               <h1>hejsan</h1>             )}           )}       </div>     </div>   ) }   But it doesn't work..! Here's the error:

I appreciate all the help I can get!
To use a condition inside map() in React:Call the map() method on an array. Use a ternary operator to check if the condition is truthy. The operator returns the value to the left of the colon if the condition is truthy, otherwise the value to the right is returned.
if-else statements don't work inside JSX. This is because JSX is just syntactic sugar for function calls and object construction.
Use a map() inside a map() function in React # To use a map() inside a map() function in React: Call map() on the outer array, passing it a function. On each iteration, call the map() method on the other array.
You are using both ternary operator and if condition, use any one.
By ternary operator:
.map(id => {     return this.props.schema.collectionName.length < 0 ?         <Expandable>             <ObjectDisplay                 key={id}                 parentDocumentId={id}                 schema={schema[this.props.schema.collectionName]}                 value={this.props.collection.documents[id]}             />         </Expandable>     :         <h1>hejsan</h1> }   By if condition:
.map(id => {     if(this.props.schema.collectionName.length < 0)         return <Expandable>                   <ObjectDisplay                       key={id}                       parentDocumentId={id}                       schema={schema[this.props.schema.collectionName]}                       value={this.props.collection.documents[id]}                   />               </Expandable>     return <h1>hejsan</h1> } 
                        There are two syntax errors in your ternary conditional:
if. Check the correct syntax here.You are missing a parenthesis in your code. If you format it like this:
{(this.props.schema.collectionName.length < 0 ?     (<Expandable></Expandable>)     : (<h1>hejsan</h1>)  )}  Hope this works!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With