import React, { Component, PropTypes } from 'react';
यह कहता है:
आयात डिफ़ॉल्ट से निर्यात 'react'
नाम के तहत React
और आयात नामित निर्यात Component
और PropTypes
एक ही नाम के तहत।
यह दो सामान्य वाक्यविन्यास को जोड़ती है जो आपने शायद देखा है
import React from 'react';
import { Component, PropTypes } from 'react';
पहले का उपयोग डिफ़ॉल्ट निर्यात को आयात करने और नाम देने के लिए किया जाता है, दूसरा निर्दिष्ट नामित निर्यातों को आयात करने के लिए किया जाता है।
एक सामान्य नियम के रूप में, अधिकांश मॉड्यूल या तो एकल, डिफ़ॉल्ट निर्यात, या नामित निर्यात की सूची प्रदान करेंगे। एक मॉड्यूल के लिए डिफ़ॉल्ट निर्यात और नामित निर्यात दोनों प्रदान करना कुछ हद तक सामान्य है । हालांकि, इस मामले में जहां एक विशेषता है जो सबसे अधिक आयात की जाती है, लेकिन अतिरिक्त उप-विशेषताएं भी हैं, पहले डिफ़ॉल्ट के रूप में निर्यात करने के लिए एक वैध डिजाइन है, और शेष निर्यात नाम के रूप में। यह ऐसे मामलों में है जिसका उपयोग import
आप उस वाक्यविन्यास का उपयोग करेंगे जिसका आप उल्लेख करते हैं।
अन्य उत्तर कहीं न कहीं गलत और भ्रमित करने वाले हैं, संभवतः क्योंकि जिस समय यह प्रश्न पूछा गया था उस समय एमडीएन दस्तावेज गलत और भ्रमित करने वाले थे। एमडीएन ने उदाहरण दिखाया
import name from "module-name";
और कहा name
कि "उस वस्तु का नाम है जिसे आयातित मान प्राप्त होंगे।" लेकिन यह भ्रामक और गलत है; सबसे पहले, केवल एक आयात मूल्य है, जो "प्राप्त" होगा (क्यों न केवल "असाइन किया गया", या "संदर्भित करने के लिए इस्तेमाल किया" कहें) name
और इस मामले में आयात मूल्य मॉड्यूल से डिफ़ॉल्ट निर्यात है ।
यह समझाने का एक और तरीका यह है कि उपरोक्त आयात ठीक उसी के समान है
import { default as name } from "module-name";
और ओपी का उदाहरण इसके समान है
import { default as React, Component, PropTypes } from 'react';
MDN प्रलेखन उदाहरण दिखाने के लिए चला गया
import MyModule, {foo, bar} from "my-module.js";
और दावा किया कि इसका मतलब है
संपूर्ण मॉड्यूल की सामग्री आयात करें, कुछ के साथ स्पष्ट रूप से नाम दिया गया है। यह सम्मिलित करता है myModule
(सिक) foo
, और bar
वर्तमान दायरे में। ध्यान दें कि foo
और myModule.foo
एक ही हैं, के रूप में कर रहे हैं bar
औरmyModule.bar
एमडीएन ने यहां क्या कहा, और गलत एमडीएन प्रलेखन के आधार पर अन्य उत्तर क्या दावा करते हैं, बिल्कुल गलत है, और यह कल्पना के पुराने संस्करण पर आधारित हो सकता है। यह वास्तव में क्या करता है
डिफ़ॉल्ट मॉड्यूल निर्यात और कुछ नामांकित निर्यात आयात करें। यह सम्मिलित करता है MyModule
, foo
और bar
वर्तमान दायरे में। निर्यात के नाम foo
और के माध्यम से सुलभ नहींbar
हैंMyModule
, जो डिफ़ॉल्ट निर्यात है, न कि सभी निर्यातों को कवर करने वाला कुछ छाता।
(डिफ़ॉल्ट मॉड्यूल निर्यात export default
सिंटैक्स के साथ निर्यात किया जाने वाला मूल्य है , जो हो भी सकता है export {foo as default}
।)
MDN दस्तावेज़ीकरण लेखकों को निम्नलिखित फ़ॉर्म से उलझन हो सकती है:
import * as MyModule from 'my-module';
यह सभी निर्यातों को आयात करता है my-module
, और जैसे नामों के तहत उन्हें सुलभ बनाता है MyModule.name
। डिफ़ॉल्ट निर्यात भी सुलभ है MyModule.default
, क्योंकि डिफ़ॉल्ट निर्यात वास्तव में नाम के साथ एक और नामित निर्यात से ज्यादा कुछ नहीं है default
। इस सिंटैक्स में, केवल नामित निर्यात का एक सबसेट आयात करने का कोई तरीका नहीं है, हालांकि कोई डिफ़ॉल्ट निर्यात आयात कर सकता है, अगर कोई एक साथ, सभी नामित निर्यातों के साथ है
import myModuleDefault, * as myModule from 'my-module';