Bunun için bana ReactJS için acemi olduğumu söyleyerek başlayayım. React kullanarak verileri dolduran basit bir site yaparak öğrenmeye çalışıyorum. Harita ile ilintilendirilecek bağlantı verilerini içeren bir JSON dosyanız var. Sonra bileşenler devlet olarak ayarlama bir pervane vasıtasıyla navbar bağlantıları geçirmeden ama "Yakalanmayan TypeError: null 'verilerini' özelliği okunamıyor" alıyorum çalıştıkReactJS this.state null
ben etrafa bakmak çalıştı çözümler ama hiçbir şey bulamadı.
Not: Bir nesneyi sabit kodlamaya çalıştığımda ve bu yolla eşleme yaptığımda, harita döndürülemez. Ancak ben doğrudan setState hatası ile ilgili olduğundan emin değilim. setState()
zaman uyumsuz olduğu için
/** @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' kelimesini yanlış yazdınız (başlangıçta t'den hemen sonra 'i' eksiksiniz) – trekforever
Sorununuzu @trekforever gibi görünüyor. Bir kenara göre, 'console.log (this.state.data)' muhtemelen, React 'setState' çağrısını sıraya koyacağından, doğru sonuçları basmayacaktır. Eğer 'setState' çağrısından sonra durumunuzu yazdırmak isterseniz bir geri bildirim sağlamanız gerekir: 'this.setState ({something: 'blah'}, function() {console.log (this.state.something); }); – edoloughlin
@trekforever DERP, teşekkürler! –