如何在React中根据JavaScript对象渲染组件X次?

5

我试图根据OBJECT(照片)的长度来渲染X张照片。我尝试将数据附加到字符串中,但它不起作用。有好的解决方案吗?

var RenderPhotos = React.createClass({
  getInitialState: function() {
      return {
        photos: this.props.photos
      };
  },
  render: function(){
    var photoHolder = "";
    for(var i=0;i<this.props.photos.length;i++){
      photoHolder += ("<View>
        <Text>" { this.props.photos[0].description } "</Text>
      </View>");
    }

    return (
      { photoHolder }
      // <View>
      //   <Text> { this.props.photos[0].description } </Text>
      // </View>
    )
  }
});
1个回答

8

2017年12月更新:React v16现在允许您从render函数中返回一个数组。


使用React类时,您的顶层render函数必须返回单个组件。但是,在JSX中,您可以插入单个组件或组件数组。

像这样:

render() {
    var photoHolder = [];
    for(var i=0;i<this.props.photos.length;i++){
        photoHolder.push(
            (<View>
                <Text>{ this.props.photos[0].description }</Text>
            </View>)
        );  
    }

    return (
        <View>
            {photoHolder}
        </View>
    )
}

编辑:这里有另一种解决方案:

render() {
    return (
        <View>
            {this.props.photos.map((photo, i) => {
                return (
                    <View><Text>{photo.description}</Text></View>
                );
            })}
        </View>
    )
}

啊,好的!谢谢 :) 我对这个还比较新,所以我只是在试图理解React的工作原理。 - James111

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接