从map返回的React渲染数组

时间:2015-04-04 12:11:01

标签: javascript dictionary promise reactjs lodash

我面临一个与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>
      );
   }

1 个答案:

答案 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