2015-03-10 14 views
13

mam następującą definicję klasy:klasa import i wywołać metodę statyczną z modułami ES6 z babel transpiler

class EmberReflux{ 
    static createActions(actions) { 
    console.log(actions); 
    } 
} 

export { EmberReflux }; 

Kiedy zaimportować go z innego pliku:

import EmberReflux from '../utils/ember-reflux'; 

let TodoActions = EmberReflux.createActions(
[ 
    "addItem", 
    "undo", 
    "redo" 
]); 

export { TodoActions }; 

transpiled wygląda tak

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; 

}); 

nie jestem pewien, co domyślnie jest w EmberReflux['default']

chcę zadzwonić statycznej metody klasy tak:

EmberReflux.createActions 

Ale zamiast tego muszę nazwać tak:

EmberReflux.EmberReflux.createActions 
+2

Wypróbuj 'eksportuj domyślnie EmberReflux' – elclanrs

Odpowiedz

17

Masz dwie opcje:

  1. Eksportuj EmberReflux tak jak Ty:

    export { EmberReflux }; 
    

    a następnie zaimportować go lubię:

    import { EmberReflux } from '../utils/ember-reflux'; 
    
  2. Korzystając default podczas eksportowania:

    export default EmberReflux; 
    

    i zaimportować go (jak robisz):

    import EmberReflux from '../utils/ember-reflux'; 
    

W obu przypadkach można następnie użyć EmberReflux jak:

EmberReflux.createActions(); 
+1

Dlaczego potrzebujemy wartości domyślnej w drugim przykładzie? Innymi słowy, dlaczego nie możemy eksportować EmberReflux bezpośrednio? – Ced

+0

Ponieważ w drugim przykładzie nie zniszczycie 'EmberReflux' w jego własnej zmiennej. –

4

nie mam wystarczającej reputacji uwag, odebrać alexpods jest doskonały, ale na kwestiach zrozumienia naszego przyjaciela Ced zapytał:

Dlaczego my potrzebujesz domyślnego w drugim przykładzie? Innymi słowy, dlaczego nie możemy eksportować EmberReflux bezpośrednio?

Kiedy pisał tak:

export { EmberReflux }; 

To samo pisanie tak:

export { EmberReflux: EmberReflux }; 

Dlatego trzeba uruchomić EmberReflux.EmberReflux, rozwiązanie jest bardzo proste:

export default EmberReflux; 
Powiązane problemy