मुझे यह कहकर प्रस्तावना दें कि मैं ReactJS के लिए नौसिखिया हूं। मैं एक साधारण साइट बनाकर सीखने की कोशिश कर रहा हूं जो प्रतिक्रिया का उपयोग कर डेटा को पॉप्युलेट करता है। मेरे पास एक JSON फ़ाइल है जिसमें लिंक डेटा है जो मानचित्र के साथ looped जाएगा।ReactJS this.state null
मैं घटकों राज्य के रूप में यह तो स्थापित करने के लिए एक आधार के माध्यम से नेविगेशन बार लिंक करने के लिए इसे पारित लेकिन मैं हो रही है "Uncaught TypeError: अशक्त की 'डेटा' संपत्ति पढ़ा नहीं जा सकता" की कोशिश की है
मैं के लिए चारों ओर देखने की कोशिश की समाधान लेकिन कुछ भी नहीं मिला।
नोट: जब मैं किसी ऑब्जेक्ट को हार्ड कोड करने की कोशिश करता हूं और इस तरह से मैप करता हूं तो यह मानचित्र को वापस लाता है। हालांकि मुझे यकीन नहीं है कि सीधे सेटस्टेट त्रुटि से संबंधित है। क्योंकि setState()
async है
/** @jsx React.DOM */
var conf = {
companyName: "Slant Hosting"
};
var NavbarLinks = React.createClass({
render: function(){
var navLinks = this.props.data.map(function(link){
return(
<li><a href={link.target}>{link.text}</a></li>
);
});
return(
<ul className="nav navbar-nav">
{navLinks}
</ul>
)
}
});
var NavbarBrand = React.createClass({
render: function(){
return(
<a className="navbar-brand" href="#">{conf.companyName}</a>
);
}
});
var Navbar = React.createClass({
getInitalState: function(){
return{
data : []
};
},
loadNavbarJSON: function() {
$.ajax({
url: "app/js/configs/navbar.json",
dataType: 'json',
success: function(data) {
this.setState({
data: data
});
console.log(data);
console.log(this.state.data);
}.bind(this),
error: function(xhr, status, err) {
console.error(this.props.url, status, err.toString());
}.bind(this)
});
},
componentDidMount: function(){
this.loadNavbarJSON();
},
render: function(){
return(
<nav className="navbar navbar-default navbar-fixed-top" role="navigation">
<div className="container-fluid">
<div className="navbar-header">
<NavbarBrand />
</div>
<NavbarLinks data={this.state.data} />
</div>
</nav>
);
}
});
var Header = React.createClass({
render: function(){
return(
<Navbar />
);
}
});
React.renderComponent(
<Header />,
document.getElementById('render')
);
आपने 'getInitialState' गलत वर्तनी की है (आप प्रारंभ में टी के बाद' i 'ठीक से अनुपलब्ध हैं) – trekforever
ऐसा लगता है कि @trekforever आपकी समस्या पाई। एक तरफ के रूप में, आपका 'console.log (this.state.data)' शायद सही परिणामों को प्रिंट नहीं करेगा, क्योंकि प्रतिक्रिया 'सेटस्टेट' कॉल कतारबद्ध होगी। यदि आप 'सेटस्टेट' पर कॉल के बाद अपना राज्य प्रिंट करना चाहते हैं तो आपको कॉलबैक देना होगा: 'this.setState ({something: 'blah'}, function() {console.log (this.state.something); }); ' – edoloughlin
@trekforever डीईआरपी, धन्यवाद! –