我想在JSX中的for循环中创建HTML。这是我尝试的样子

    function renderTemplates(templates){
           var html = [];
           var templateDiv = [];
           var count  = 0;
           for(var identifier in templates){
             if(templates.hasOwnProperty(identifier)){
               var templateDetails = templates[identifier];
               if(count == 0){
                  html.push(<Row>);
               }
               cols = <Col md={6}>ff
                          </Col>;
               html.push(cols);
               if(count == 0){
                      html.push(</Row>);
               }
               count = (count === 1)?0:1;
             }
        }
        return html;
     }

我知道这是错误的语法,但无法弄清楚该怎么做。基本上我有一些数据,并且想要以2格位于1行水平的方式创建html。

最佳答案

recent project上,我执行了类似的操作,但是使用了表行/列。

var TableBody = React.createClass({
  render: function(){
    var columns = this.props.columns;
    var data = this.props.data;

    return (
      <tbody>
        {data.map(function(item, idx){
          return <TableRow key={idx} data={item} columns={columns}/>;
        })}
      </tbody>
    )
  }
});

我的<TableRow />组件如下所示:
var TableRow = React.createClass({
  render: function() {
    var columns = this.props.columns;
    var data = this.props.data;
    var td = function(item) {

        return columns.map(function(c, i) {
          return <td key={i}>{item[c]}</td>;
        }, this);
      }.bind(this);

    return (
      <tr key={data}>{ td(data) }</tr>
    )
  }
});

关于reactjs - 使用React.js在JSX中从for循环创建HTML,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28694349/

10-10 19:11