import React, { Component, PropTypes } from 'react';
Bu diyor ki:
İçe varsayılan gelen ihracat 'react'
adı altında React
ve ithalat adlı ihracatını Component
ve PropTypes
aynı adlar altında.
Bu, muhtemelen gördüğünüz iki ortak sözdizimini birleştirir
import React from 'react';
import { Component, PropTypes } from 'react';
Birincisi varsayılan dışa aktarmayı içe aktarmak ve adlandırmak için kullanılırken, ikincisi belirtilen adlandırılmış dışa aktarmaları içe aktarmak için kullanılır.
Genel bir kural olarak, çoğu modül ya tek bir varsayılan dışa aktarma ya da adlandırılmış dışa aktarımların bir listesini sağlar. Bir modül varsayılan bir ihracat hem sağlamak için bu biraz daha az olağan olduğu ve adlandırılmış ihracat. Bununla birlikte, en yaygın olarak içe aktarılan bir özelliğin yanı sıra ek alt özelliklerin olduğu durumda, ilkini varsayılan olarak ve kalanlarını adlandırılmış dışa aktarmalar olarak dışa aktarmak geçerli bir tasarımdır. Bu tür durumlarda, import
atıfta bulunduğunuz sözdizimini kullanırsınız.
Diğer cevaplar yanlış ve kafa karıştırıcı arasında bir yerdedir, bunun nedeni muhtemelen bu sorunun sorulduğu sırada MDN belgelerinin yanlış ve kafa karıştırıcı olmasıdır. MDN örneği gösterdi
import name from "module-name";
ve name
"içe aktarılan değerleri alacak nesnenin adı" dır. Ama bu yanıltıcı ve yanlış; her şeyden önce, "alınacak" yalnızca bir içe aktarma değeri vardır (neden yalnızca "atanmış" veya "başvurmak için kullanılır" demiyorsunuz) name
ve bu durumda içe aktarma değeri , modülden varsayılan dışa aktarmadır .
Bunu açıklamanın bir başka yolu da, yukarıdaki içe aktarmanın tam olarak aynı olduğuna dikkat etmektir.
import { default as name } from "module-name";
ve OP'nin örneği tam olarak aynıdır
import { default as React, Component, PropTypes } from 'react';
MDN belgeleri örneği göstermeye devam etti
import MyModule, {foo, bar} from "my-module.js";
ve bunun anlamına geldiğini iddia etti
Bazıları da açıkça adlandırılmış bir modülün tüm içeriğini içe aktarın. Bu myModule
, (sic) foo
ve bar
geçerli kapsama ekler . Not olduğunu foo
ve myModule.foo
gibidir, aynı bar
vemyModule.bar
MDN'nin burada söylediği ve yanlış MDN belgelerine dayanan diğer yanıtların iddia ettiği şey kesinlikle yanlıştır ve spesifikasyonun daha önceki bir sürümüne dayanıyor olabilir. Bunun aslında yaptığı şey
Varsayılan modül dışa aktarımını ve açıkça adlandırılmış bazı dışa aktarmaları içe aktarın. Bu uçlar MyModule
, foo
ve bar
geçerli kapsam içine. İhracat isimleri foo
ve bar
vardır değil erişilebilirMyModule
olan varsayılan ihracat, tüm ihracatını kapsayan bazı şemsiye.
(Varsayılan modül dışa aktarımı, export default
sözdizimi ile dışa aktarılan değerdir ve bu da olabilir export {foo as default}
.)
MDN dokümantasyon yazarları aşağıdaki formla karıştırılmış olabilir:
import * as MyModule from 'my-module';
Bu my-module
, tüm ihracatları içe aktarır ve bunları gibi adlar altında erişilebilir kılar MyModule.name
. Varsayılan dışa aktarmaya şu MyModule.default
adla da erişilebilir , çünkü varsayılan dışa aktarım aslında ada sahip başka bir adlandırılmış dışa aktarmadan başka bir şey değildir default
. Bu sözdiziminde, adlandırılmış dışa aktarımların yalnızca bir alt kümesini içe aktarmanın bir yolu yoktur, ancak biri varsa varsayılan dışa aktarım tüm adlandırılmış dışa aktarmalarla birlikte içe aktarılabilir.
import myModuleDefault, * as myModule from 'my-module';