Why sometimes import has {} and sometimes doesn't?


Why sometimes import has {} and sometimes doesn’t?


The way on how we import the content from another file will always depend on how it is being exported, for example when we see:

import ComponentName from './ComponentName';

it means that whatever ComponentName is, it is a default export, which means that it is the only export of it’s kind, this approach is mainly implemented with objects, or some classes like in the case of components:

class ComponentName extend React.Component {

export default ComponentName;

Then when we see:

Import { ComponentName } from './ComponentName';

It just means that it is a named export by having the export keyword assigned to it which makes it like a property of an exported object:

export class ComponentName extends React.Component {

As a bonus, we can also import from named exports using aliases:

import * as allComponentMethods from './ComponentName';
/* which reads: import all under the name allComponentMethods*/

import { ComponentName as NamedExported } from './ComponentName';
/*here we change the name on the name export*/