end*_*nd6 1 javascript ecmascript-6 lodash
我尝试在我的代码中使用对象破坏导入。
我只想在我的组件中导入映射和扩展。
我会做吗
import { map, extend } from lodash;
Run Code Online (Sandbox Code Playgroud)
我如何在我的代码中使用它?
Javascript 也有地图,所以如果我这样做
let arr = [1,3,4];
arr.map((item) => console.log(item))
Run Code Online (Sandbox Code Playgroud)
我如何引用lodash地图,而不是实际的地图方法?
PS:我试图了解对象破坏方法。我知道我可以使用 ES6 地图,这只是一个例子。
这是默认导入。
import _ from 'lodash';
_.map(...);
Run Code Online (Sandbox Code Playgroud)
这是命名导入。
import { map } from 'lodash';
map(...);
Run Code Online (Sandbox Code Playgroud)
作为默认导入的方法和作为独立函数使用map()本质上是相同的(唯一有意义的区别是 的值)this。哪种语法有效取决于您要导入的库。如果库定义了默认导出并且命名导入/导出也相同,则只能使用默认导入。两者也可以同时使用,尽管这有点不寻常。
默认导入可以根据您的喜好命名。如果你想迷惑人们并假装 Lodash 是 jQuery,你可以这样做。
`import $ from 'lodash';`
Run Code Online (Sandbox Code Playgroud)
另一方面,命名导入具有它们所绑定的特定名称。因此,与默认导入不同,尝试在$vs上使用命名导入语法_引用一个完全不同的对象,如果未在库中定义为导出,则会抛出异常。
// These are very different.
import { $ } from 'lodash';
import { _ } from 'lodash';
Run Code Online (Sandbox Code Playgroud)
如果有必要,您可以“重命名”命名导入。
import { map as crazyFunc } from 'lodash';
Run Code Online (Sandbox Code Playgroud)
在上述情况下,crazyFunc可以随意命名,但map必须保持原样,否则它将引用一个完全不同的对象,并且如果未在库中定义为导出,则会抛出异常。
这可能有助于理解它们是等效的。
import { default as _ } from 'lodash';
import _ from 'lib';
Run Code Online (Sandbox Code Playgroud)
后者只是前者的糖。默认导出语法是 Sugar,用于创建名为 的命名导出default。
有关更多信息(包括此处未介绍的功能),请参阅ES6 模块语法。
完整示例:
import { map } from 'lodash';
const squares = map([4, 8], (n) => {
return n * n;
});
console.log(squares); // => [16, 64]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2049 次 |
| 最近记录: |