对象破坏从库导入

时间:2017-01-11 16:42:59

标签: javascript ecmascript-6 lodash

我试图在我的代码中使用对象破坏导入。

我想只导入map并在我的组件中扩展。

我会吗

import { map, extend } from lodash;

如何在我的代码中使用它?

Javascript也有地图,所以如果我这样做

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

我如何参考lodash地图,而不是实际的地图方法?

PS:我试图理解对象破坏方法。我知道我可以使用ES6地图,这只是一个例子。

1 个答案:

答案 0 :(得分:4)

这是默认导入

Object

这是一个名为import

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

使用import { map } from 'lodash'; map(...); 作为默认导入的方法和独立函数基本相同(唯一有意义的区别是value of this)。哪种语法适用于您要导入的库。如果库定义了默认导出,则只能使用默认导入,对于命名的导入/导出,只能使用相同的导入。两者也可以同时使用,虽然这有点不寻常。

默认导入可以根据您的心愿命名。如果你想让人混淆并假装Lodash是jQuery,你可以这样做。

map()

另一方面,命名导入具有绑定的特定名称。因此,与默认导入不同,尝试在`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'; 的命名导出的糖。

有关详情(包括此处未涵盖的功能),请参阅ES6 modules syntax

完整示例:

default