When writing JSX you can either start your tag in lowercase <div> or in uppercase <Component>. Below we will discuss each case separately
Lowercase tags
Babel transforms <div>.. into React.createElement('div',...). Essentially treating the tag name div as a string.
Capitalized tags
Babel transforms <Component>... into React.createElement(Component,...). Notice the lack of quotation around Component this means it will get treated as a variable.
What can the variable hold?
The first argument to React.createElement can only hold strings or functions that return something that's renderable. Typically it simply holds a React component, which is a function that returns JSX.
Conclusion
Now we know <Component>.. doesn't have to reference a React component. It can also reference a simple string or any function that returns renderable content.
Top comments (0)