I have seen two ways of accessing Component
:
import React from 'react';
class Foo extends React.Component {
...
}
and
import React, { Component } from 'react';
class Foo extends Component {
...
}
Is there any difference between the two (maybe in performance, for example)?
Short answer: no.
Looking at it from the other side might make understanding easier.
If you imagine the react module itself - it might look something like this.
Notice the use of
export
.The default
export
is React, so it is accessed (or imported) in another module like this:Component is a named export:
Component
, and so is accessed in another module via:But in this case Component is also attached to the React object. So you could use the imports in any of the following ways:
A few other points worth mentioning:
import Cat from 'react';
.import { Component as Cat } from 'react';
In first example you got the whole exports through
import React
, and you callComponent
through react import. In second example you importComponent
separately from React. That's why you don't need to writeReact.Component
. It's the same, but in different ways of import.No, it's just a matter of what you import into the local namespace. If you already have something called Component locally, you wouldn't be able to do the latter. Other than that it's just preference, whether you want to list everything that's imported up top, or instead be able to easily see which module something is from at usage sites.