2016-05-05 22 views
6

गैर-डिफ़ॉल्ट निर्यात का उपयोग करने के दो उदाहरण यहां दिए गए हैं। पहला आमज सिंटैक्स का उपयोग करता है, और दूसरा ईएस 6 का उपयोग करता है। पहला उदाहरण क्यों काम करता है, लेकिन दूसरा नहीं?कॉमनजेएस आयात बनाम ईएस 6 आयात

// commonjs --- works! 
var ReactRouter = require('react-router') 
var Link = ReactRouter.Link 


// es6 --- doesn't work! 
import ReactRouter from 'react-router' 
var Link = ReactRouter.Link 

मैं समझता हूँ कि मैं import { Link } from 'react-router' बजाय उपयोग कर सकते हैं, लेकिन मैं सिर्फ चारों ओर कैसे प्रत्येक आयात अलग है मेरे सिर लपेटो करने की कोशिश कर रहा हूँ।

+1

मुझे लगता है कि आपके पास अपने कॉमनजेएस में एक टाइपो भी है, क्या यह 'var link = ReactRouter.Link' नहीं होना चाहिए? – CodingIntrigue

+0

हां, हालांकि यह समस्या नहीं थी – Jonny

उत्तर

8

import ReactRouter केवल डिफ़ॉल्ट निर्यात आयात करता है। यह नामित निर्यात की एक वस्तु आयात नहीं करता है जो आप अपने ES6 कोड में प्राप्त करने का प्रयास कर रहे हैं। यदि मॉड्यूल में कोई डिफ़ॉल्ट निर्यात नहीं है, तो यह undefined होगा।

जैसा कि कहा गया है, import { Link } from 'react-router' एक आयातित निर्यात आयात करने के लिए समर्पित वाक्यविन्यास है।

आप एक वस्तु में सभी नामित निर्यात आयात करना चाहते हैं, तो आप import..as सिंटैक्स का उपयोग कर सकते हैं:

import * as ReactRouter from 'react-router'; 
var Link = ReactRouter.Link 

MDN आयात के सभी विभिन्न प्रकार के एक सुपर उपयोगी सूची है और वे कैसे काम ।

+0

तो 'var ReactRouter = आवश्यकता ('प्रतिक्रिया-राउटर')' आयात * के बराबर है 'प्रतिक्रिया-राउटर' से प्रतिक्रिया राउटर के रूप में? – Jonny

+1

@ जॉनी बिल्कुल। – CodingIntrigue

संबंधित मुद्दे