Reputation: 930
I'm trying to dynamically import a class when a router condition is met.
I have no problems importing a standard (non-class) module, as this works as expected:
Router.on({
'/:region/map': (params) => {
import("Controllers/map.js" /* webpackChunkName: "map" */).then(({map}) => {
map.initialise(params.region);
});
}
});
But trying to do the same with a class is not working as expected.
Router.on({
'/:region/map': (params) => {
import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
Map.initialise(params.region);
});
}
});
Which fails 'e.initialise is not a function';
I also try to instantiate the class by using the new
keyword:
Router.on({
'/:region/map': (params) => {
import("Controllers/map.js" /* webpackChunkName: "map" */).then(Map => {
const MapClass = new Map();
MapClass.initialise(params.region);
});
}
});
But still no joy!
How do I dynamically import a class in this scenario?
UPDATE:
This is my Map module, as a non-class module, which works:
var map = {
initialise(region) {
console.log("Map initialised for region: " + region);
}
}
export { map };
This is the same module but as a Class:
export default class Map {
constructor() {
//
}
initialise(region) {
console.log("Map initialised for region: " + region);
}
}
Upvotes: 1
Views: 1920
Reputation: 2786
class Map {
constructor() {
//
}
initialise(region) {
console.log("Map initialised for region: " + region);
}
}
export { Map }
Router.on({
'/:region/map': (params) => {
import("Controllers/map.js").then(({ Map })=> {
const MapClass = new Map();
MapClass.initialise(params.region);
});
}
});
can you try the above code and see are you getting Class in console
Upvotes: 2