How to import two classes by the same name in javascript/es6?
I have these two import statements in file:
import Data from 'component/Data.js';
import Data from 'actions/Data.js';
Both files contain a class named Data
.
How can I specify which is which? How can I avoid name clash?
Presumably component/Data
and actions/Data
both have default exports rather than named exports? Like this:
export default class Data {}
If that's the case, then the importer can call the variables whatever they like:
import Data1 from 'component/Data.js';
import Data2 from 'actions/Data.js';
If they are named exports:
export class Data {}
Then you need to use braces along with as
to specify the source and target names:
import { Data as Data1 } from 'component/Data.js';
import { Data as Data2 } from 'actions/Data.js';
EDITED: As per RGraham answer, updating my answer:
Can't you import it like this:
import {Data as D1} from 'component/Data.js';
import {Data as D2} from 'actions/Data.js';
Then use it as you require:
D1.{}
D2.{}
referenced from: https://github.com/lukehoban/es6features/blob/master/README.md/#user-content-modules
There are two alternatives:
import {MyClass as c1} from ......
import {MyClass as c2} from ......
or second alternative:
import MyClass from .......
import {MyClass as c2} from ......
You can use first line but in some cases, you may get stuck using the first line.Then use the second line.