Importing a Component

This project setup supports ES6 modules thanks to Webpack.While you can still use require() and module.exports, we encourage you to use import and export instead.

For example:

Button.js

  1. import React, { Component } from 'react';
  2. class Button extends Component {
  3. render() {
  4. // ...
  5. }
  6. }
  7. export default Button; // Don’t forget to use export default!

DangerButton.js

  1. import React, { Component } from 'react';
  2. import Button from './Button'; // Import a component from another file
  3. class DangerButton extends Component {
  4. render() {
  5. return <Button color="red" />;
  6. }
  7. }
  8. export default DangerButton;

Be aware of the difference between default and named exports. It is a common source of mistakes.

We suggest that you stick to using default imports and exports when a module only exports a single thing (for example, a component). That’s what you get when you use export default Button and import Button from './Button'.

Named exports are useful for utility modules that export several functions. A module may have at most one default export and as many named exports as you like.

Learn more about ES6 modules:

Absolute Imports

You can configure your application to support importing modules using absolute paths. This can be done by configuring a jsconfig.json or tsconfig.json file in the root of your project. If you're using TypeScript in your project, you will already have a tsconfig.json file.

Below is an example jsconfig.json file for a JavaScript project. You can create the file if it doesn't already exist:

  1. {
  2. "compilerOptions": {
  3. "baseUrl": "src"
  4. },
  5. "include": ["src"]
  6. }

If you're using TypeScript, you can configure the baseUrl setting inside the compilerOptions of your project's tsconfig.json file.

Now that you've configured your project to support absolute imports, if you want to import a module located at src/components/Button.js, you can import the module like so:

  1. import Button from 'components/Button';

For more information on these configuration files, see the jsconfig.json reference and tsconfig.json reference documentation.