2015-03-10 2 views
13

ho la seguente definizione di classe:classe importazione e chiamare il metodo statico con moduli ES6 con Babel transpiler

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

export { EmberReflux }; 

Quando importo da un file diverso:

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

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

export { TodoActions }; 

Il transpiled si presenta così

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; 

}); 

io non sono sicuro di quello che il valore predefinito è in EmberReflux['default']

voglio chiamare il metodo della classe statico come questo:

EmberReflux.createActions 

Ma invece devo chiamare in questo modo:

EmberReflux.EmberReflux.createActions 
+2

Provare 'export default EmberReflux' – elclanrs

risposta

17

Sono disponibili due opzioni:

  1. Export EmberReflux come si fa:

    export { EmberReflux }; 
    

    e quindi importarlo come:

    import { EmberReflux } from '../utils/ember-reflux'; 
    
  2. Usa default durante l'esportazione:

    export default EmberReflux; 
    

    e importarlo (come si sta facendo):

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

In entrambi i casi è quindi possibile utilizzare il EmberReflux come:

EmberReflux.createActions(); 
+1

Perché fare abbiamo bisogno del default nel 2 ° esempio? In altre parole, perché non possiamo esportare direttamente EmberReflux? – Ced

+0

Perché nel secondo esempio non si distrugge 'EmberReflux' nella propria variabile. –

4

io non ho abbastanza fama di commentare, la risposta del alexpods è perfetto, ma per questioni di capire il nostro amico Ced ha chiesto:

Perché noi bisogno del default nel 2 ° esempio? In altre parole, perché non possiamo esportare direttamente EmberReflux?

Quando hai scritto in questo modo:

export { EmberReflux }; 

E 'la stessa scritta in questo modo:

export { EmberReflux: EmberReflux }; 

Ecco perché è necessario eseguire EmberReflux.EmberReflux, la soluzione è molto semplice:

export default EmberReflux;