2016-02-11 19 views
12

हाय मुझे पता है कि इस प्रकार के प्रश्न से कुछ बार पूछा गया है लेकिन मुझे जवाब नहीं मिला।असीमित संदर्भ त्रुटि: प्रतिक्रिया को परिभाषित नहीं किया गया है

मैं एक प्रतिक्रिया हैलो विश्व उदाहरण लिखने की कोशिश कर रहा हूं। मेरे पास केवल दो फाइलें हैं एक app.jsx और दूसरा मुखपृष्ठ.जेएसएक्स। मैं फ़ाइलों को बंडल करने के लिए वेबपैक का उपयोग कर रहा हूं।

लेकिन मैं Uncaught ReferenceError: React is not defined

मेरे homepage.jsx इस

"use strict"; 

var React = require('react'); 

var Home = React.createClass({ 
    render : function() { 
     return (
      <div className="jumbotron">     
       <h1> Hello World</h1> 
      </div> 
     ); 
    } 
}); 

module.exports = Home; 

मेरे app.js इस

var ReactDOM = require('react-dom'); 

var Home = require('./components/homePage'); 

ReactDOM.render(
    <Home/>, 
    document.getElementById('app') 
); 

ब्राउज़र में फेंक देता है Uncaught ReferenceError: React is not defined तरह लग रहा है की तरह लग रहा प्राप्त जब मैं कोड को चलाने लाइन 7 पर यानी जहां मुझे होमपेज की आवश्यकता है।

लेकिन जब मैं app.jsx में var React = आवश्यकता ('प्रतिक्रिया') जोड़ता हूं तो यह ठीक काम करता है।

मुझे यह समझ में नहीं आता है। मैंने homepage.jsx में प्रतिक्रिया शामिल की है जहां मैं इसका उपयोग कर रहा हूं। App.jsx में मुझे केवल प्रतिक्रिया-डोम की आवश्यकता होती है क्योंकि मैं प्रतिक्रिया का उपयोग नहीं करता हूं। तो यह app.jsx में त्रुटि क्यों दे रहा है।

Pls मदद !!

उत्तर

29

बदलें अपने app.js इस

var React = require('react'); 
var ReactDOM = require('react-dom'); 

var Home = require('./components/homePage'); 

ReactDOM.render(
    <Home/>, 
    document.getElementById('app') 
); 

को JSX React.createElement() कॉल में तब्दील हो जाता है, इस प्रकार प्रतिक्रिया दायरे में आवश्यक है। तो हाँ, आप app.js में उपयोग कर रहे हैं। जब भी आप जेएसएक्स का उपयोग करते हैं या सीधे React.* कॉल का उपयोग करते हैं तो इसे आयात करने के लिए उपयोग करें।

+1

देखें मैं थोड़ा इस सामग्री लेकिन आप क्यों 'की आवश्यकता होती है ('प्रतिक्रिया-डोम समझा सकता है कोई मौका करने के लिए नए कर रहा हूँ ')' प्रतिक्रिया में खींच नहीं है? – Doddie

+0

'प्रतिक्रिया-डोम' केवल "रेंडरर" है जो प्रतिक्रिया तत्वों को डीओएम नोड्स/तत्वों में परिवर्तित करता है। रिएक्ट नेटिव पर एक नज़र डालें, जिसके लिए 'रिएक्ट-डोम' की आवश्यकता नहीं है क्योंकि इसका अपना रेंडरर है जो प्लेटफॉर्म के आधार पर प्रतिक्रिया तत्वों को देशी तत्वों में परिवर्तित करता है। शुरुआती दिनों में, प्रतिक्रिया में कोड शामिल था जिसे अब मौजूदा 'प्रतिक्रिया-डोम' में निकाला गया था। – Andreyco

+0

@Andreyco जब मैं उपरोक्त कोड का उपयोग करता हूं, तो मुझे यह त्रुटि मिली संदर्भ त्रुटि: आवश्यकता को परिभाषित नहीं किया गया है var प्रतिक्रिया = आवश्यकता ('प्रतिक्रिया'); कृपया मेरी मदद करें और अग्रिम धन्यवाद – Mohd

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

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