2016-03-08 19 views
7
import {Component, ...actions} from '../MyModule'; 

Wydaje się, że rzucasz błąd lintingu. Czy istnieje powód, dla którego nie można "rozprzestrzeniać się" na wyciągu importowym ES6?Destructure Spread off Importuj ES6

+0

Czego oczekujesz od destrukturyzacji? Daje ci wszystkie inne eksporty minus "Komponent"? – nils

+1

Spójrz na specyfikację: http://www.ecma-international.org/ecma-262/6.0/#sec-imports notacja dla _NamedImports_ może wyglądać jak notacja obiektowa, ale jest czymś innym (dlatego istnieje brak destrukturyzacji). Jeśli _MyModule_ eksportuje obiekt, w którym można dokonać destrukturyzacji w zadaniu. – Matthisk

+1

Głównie dlatego, że operatorzy rozprzestrzeniania nie są częścią ES6, ale propozycją jakiejś przyszłej wersji. – Bergi

Odpowiedz

13

Składnia importu ES6 nie powoduje destrukcji, to takie proste. Składnia rozpoczyna się od {, ale jej format jest zupełnie inny, a sposób, w jaki jest obsługiwany w implementacji, jest zupełnie inny. Na przykład można zmienić nazwę importu przy użyciu domyślnej nazwy obiektu, która wyraźnie nie jest dosłownym obiektem.

Jeśli potrzebujesz obiekt, który można wykorzystać do odniesienia importu jako właściwości, można zrobić

import * as MyModule from '../MyModule'; 

następnie użyć MyModule.<exportName>. Jeśli celem jest uzyskanie obiektu zawierającego wszystkie wartości eksportu, z wyłączeniem Component, zawsze można przeprowadzić destrukturyzację po, np.

const {Component, ...actions} = MyModule;