Hãy để tôi bắt đầu bằng cách nói rằng tôi là người mới sử dụng ReactJS. Tôi đang cố gắng tìm hiểu bằng cách tạo một trang web đơn giản điền dữ liệu bằng React. Tôi có tệp JSON chứa dữ liệu liên kết sẽ được lặp qua bản đồ.ReactJS this.state null
Tôi đã cố gắng thiết lập nó như là tình trạng các thành phần sau đó đi qua nó để các liên kết navbar qua một chỗ dựa nhưng tôi nhận được "lỗi chưa gặp: Không thể đọc thuộc 'dữ liệu' null"
tôi cố gắng nhìn xung quanh cho giải pháp nhưng không thể tìm thấy bất cứ điều gì.
Lưu ý: Khi tôi cố gắng mã hóa cứng đối tượng và ánh xạ qua đối tượng đó theo cách nó trả về bản đồ là không xác định. Tuy nhiên tôi không chắc chắn đó là trực tiếp liên quan đến lỗi setState.
/** @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')
);
bạn đã viết sai chính tả 'getInitialState' (bạn đang thiếu 'i' ngay sau chữ t ban đầu) – trekforever
Có vẻ như @trekforever đã tìm thấy sự cố của bạn. Ngoài ra, 'console.log (this.state.data)' của bạn có lẽ sẽ không in kết quả chính xác, vì React sẽ xếp hàng cuộc gọi 'setState'. Nếu bạn muốn in trạng thái của bạn sau khi một cuộc gọi đến 'setState' bạn phải cung cấp một cuộc gọi lại: ' this.setState ({something: 'blah'}, function() {console.log (this.state.something); }); ' – edoloughlin
@trekforever DERP, cảm ơn! –