讓我先說這個,說我是ReactJS的新手。我試圖通過使用React填充數據的簡單網站來學習。我有一個JSON文件,其中包含將通過地圖循環的鏈接數據。ReactJS this.state null
我試圖將其設置爲組件的狀態,然後通過一個道具將它傳遞給導航欄鏈接,但我得到「遺漏的類型錯誤:無法讀取屬性空的‘數據’」
我試着到處尋找解決方案,但找不到任何東西。
注意:當我嘗試硬編碼一個對象並通過它映射它時,它返回的地圖是未定義的。但是我不確定這是否與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')
);
你拼寫錯了'getInitialState'(你剛剛在t之後錯過'i') – trekforever 2014-10-16 17:31:16
看起來像@trekforever發現你的問題。至於說,你的'console.log(this.state.data)'可能不會輸出正確的結果,因爲React會對'setState'調用進行排隊。如果你想在調用'setState'後打印你的狀態,你必須提供一個回調函數: 'this.setState({something:'blah'},function(){console.log(this.state.something); });' – edoloughlin 2014-10-16 22:02:40
@trekforever DERP,謝謝! – 2014-10-17 15:53:41