我面临一个与this question非常相似的问题,但我使用Promise获取数据,并希望在它出现时将其呈现给DOM。 console.log()
正确显示所有项目。我认为我的问题是lodash.map返回一个<li>
元素数组,所以我试图调用this.renderItems()
来呈现(但renderItems()
似乎不存在)。我做了一些非常规的事情,是否有更简单的方法,是否有相同的功能来替换我的renderItems()
?
renderArticleHeadline: function(article) {
console.log('renderArticleHeadline', article.headline);
return (
<li>
{article.headline}
</li>
)
},
render: function() {
return (
<div>
<ul>
{
this.renderItems(
this.fetchFrontPageArticles().then(data => {
lodash.map(data, this.renderArticleHeadline)
})
)
}
</ul>
</div>
);
}
答案 0 :(得分:7)
它应该是这样的
getInitialState: function() {
return {
items: []
};
},
renderArticleHeadline: function(article) {
return (
<li>
{article.headline}
</li>
);
},
componentDidMount: function() {
this.fetchFrontPageArticles().then(data => {
this.setState({
items: data
});
});
},
render: function() {
var items = lodash.map(this.state.items, this.renderArticleHeadline);
return (
<div>
<ul>
{items}
</ul>
</div>
);
}
P.S。阅读thinking in react