2017-01-11 3 views
0

私のコードでオブジェクトの破棄を使用しようとしています。オブジェクトがライブラリからインポートを破棄しています

マップのみをインポートして、コンポーネント内に拡張したいと考えています。

は、私は私のコードでそれを使用するにはどうすればよい

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(...); 

これは、インポートという名前です。デフォルトのインポートの方法として、スタンドアロン関数としてmap()を使用

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

は、本質的に(value of thisことのみ意味のある差)と同じです。どの構文が機能するかは、インポートするライブラリに依存します。ライブラリが既定のエクスポートを定義し、名前付きのインポート/エクスポートに対して同じものを定義する場合は、デフォルトのインポートのみを使用できます。両方とも同時に使用することができますが、これは珍しいことです。

デフォルトのインポートは、あなたの心が所望するものに名前を付けることができます。人々を混乱させ、LodashがjQueryであるとふりをしたいのであれば、そうすることができます。

`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] 
関連する問題