2017-01-11 7 views
0

Im пытается использовать объект, разрушающий импорт в моем коде.Объект, разрушающий импорт из библиотеки

Я хотел бы импортировать только карту и расширять ее в своем компоненте.

ли я

import { map, extend } from lodash; 

Как я могу использовать это в моем коде?

Javascript также имеет карту, так что если я

let arr = [1,3,4]; 
arr.map((item) => console.log(item)) 

Как я могу сослаться на lodash карту, а не фактический метод карты?

PS: Я пытаюсь понять методы разрушения объектов. Я знаю, что могу использовать карту ES6, это просто пример.

+0

карта (yourfunc) .bind ([1,2,3,4]); –

+2

Импорт синтаксиса не разрушает. Это создает псевдонимы, не более. – Bergi

ответ

3

Это импорт по умолчанию.

import _ from 'lodash'; 
_.map(...); 

Это назвал импорт.

import { map } from 'lodash'; 
map(...); 

Использование map() как метод импорта по умолчанию и в качестве отдельной функции, по существу, то же самое (с единственным значимым отличием является value of this). Какой синтаксис работает до библиотеки, которую вы импортируете. Вы можете использовать импорт по умолчанию, если библиотека определяет экспорт по умолчанию и тот же для имён import/exports. Оба могут также использоваться одновременно, хотя это немного необычно.

По умолчанию импорт можно назвать тем, что желает ваше сердце. Если вы хотите запутать людей и притвориться, что Lodash - это jQuery, вы можете это сделать.

`import $ from 'lodash';` 

С другой стороны, у названного импорта есть определенные имена, к которым они привязаны. Поэтому, в отличие от импорта по умолчанию, попытка использовать именованный синтаксис импорта по адресу $ vs _ относится к совершенно другому объекту и будет метать, если он не определен как экспорт в библиотеке.

// These are very different. 
import { $ } from 'lodash'; 
import { _ } from 'lodash'; 

Если возникнет необходимость, вы можете «переименовать» именованный импорт.

import { map as crazyFunc } from 'lodash'; 

В приведенном выше случае, crazyFunc можно назвать все, что душе угодно, но map должно оставаться как есть, в противном случае он будет ссылаться на совершенно другой объект и выбросит, если не определено как экспорт в библиотеке ,

Это может помочь понять, что они эквивалентны.

import { default as _ } from 'lodash'; 
import _ from 'lib'; 

Последний просто сахар для первого. И синтаксис экспорта по умолчанию - это сахар для создания именованного экспорта с именем default.

Для получения дополнительной информации (включая функции, не указанные здесь), см. ES6 modules syntax.

Полный пример:

import { map } from 'lodash'; 
const squares = map([4, 8], (n) => { 
    return n * n; 
}); 
console.log(squares); // => [16, 64]