Класс импорта и вызов статического метода с модулями es6 с транспонтером babel
У меня есть следующее определение класса:
class EmberReflux{
static createActions(actions) {
console.log(actions);
}
}
export { EmberReflux };
Когда я импортирую его из другого файла:
import EmberReflux from '../utils/ember-reflux';
let TodoActions = EmberReflux.createActions(
[
"addItem",
"undo",
"redo"
]);
export { TodoActions };
Транспортировка выглядит следующим образом
define('ember-reflux/utils/todo-actions', ['exports', 'ember-reflux/utils/ember-reflux'], function (exports, EmberReflux) {
'use strict';
var TodoActions = EmberReflux['default'].createActions(["addItem", "undo", "redo"]);
exports.TodoActions = TodoActions;
});
Я не уверен, что значение по умолчанию находится в EmberReflux['default']
Я хочу вызвать метод статического класса следующим образом:
EmberReflux.createActions
Но вместо этого я должен называть его следующим образом:
EmberReflux.EmberReflux.createActions
Ответы
Ответ 1
У вас есть два варианта:
-
Экспортируйте EmberReflux
, как вы делаете:
export { EmberReflux };
а затем импортируйте его так:
import { EmberReflux } from '../utils/ember-reflux';
-
Используйте default
при экспорте:
export default EmberReflux;
и импортировать его (например, вы делаете):
import EmberReflux from '../utils/ember-reflux';
В обоих случаях вы можете использовать свой EmberReflux
как:
EmberReflux.createActions();
Ответ 2
У меня недостаточно репутации, чтобы комментировать, ответ alexpods идеален, но для понимания нашего друга Ced спросил:
Почему нам нужен дефолт во втором примере? Другими словами, почему мы не можем напрямую экспортировать EmberReflux?
Когда вы написали так:
export { EmberReflux };
Это то же самое написано:
export { EmberReflux: EmberReflux };
Для этого вам нужно запустить EmberReflux.EmberReflux, решение очень просто:
export default EmberReflux;