Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fragments giving Unexpected token error in React 16.2

I have the following component that renders a series of components. However, I downloaded React 16.2 and tried to use fragments instead of divs, but I get the following error:

Error in ./src/containers/answers.js Syntax error: Unexpected token (24:5)    22 |        23 | return ( > 24 |     <>      |      ^   25 |       {AnswersCard}   26 |     </>   27 |    ) 

Why am I getting this error when fragments are supposed to be able to replace divs in React 16.2?

  question ?      AnswersCard = ( question.answers.sort(function(a,b) { return (a.count < b.count) ? 1 : ((b.count > a.count) ? -1 : 0)}      ).map(answer =>       <Answer key={answer.id} answer={answer} questionId={question.id} />     )) : AnswersCard = ( <p>Loading...</p> )  return (     <>       {AnswersCard}     </>    )   } } 
like image 553
Dog Avatar asked Feb 03 '18 10:02

Dog


People also ask

What is unexpected token error in React?

The JavaScript exceptions "unexpected token" occur when a specific language construct was expected, but something else was provided. This might be a simple typo.

What is the correct syntax for fragments in React?

Short Syntax You can use <></> the same way you'd use any other element except that it doesn't support keys or attributes.

Should you use fragments in React?

So, in Conclusion, React Fragments help wrap multiple elements/components together as it is better optimized, but they should only be used when needed. If one needs a wrapper for JSX styling, use a div instead. If you want to learn React.

Can React fragments have keys?

Fragments can have key props! To specify a key for a fragment, you'll need to use the standard JSX element syntax; you can't use the new <></> syntax.


1 Answers

As per the documentation, the syntax <></> is not supported by all tools and they encourage you to use <React.Fragment> instead

Check this documentation on Support for Fragment syntax

like image 169
Shubham Khatri Avatar answered Sep 22 '22 16:09

Shubham Khatri