如何渲染重复的React元素?

我已经写了一些代码来渲染ReactJS中的重复元素,但是我讨厌它是如此丑陋。

render: function(){

var titles = this.props.titles.map(function(title) {

return <th>{title}</th>;

});

var rows = this.props.rows.map(function(row) {

var cells = [];

for (var i in row) {

cells.push(<td>{row[i]}</td>);

}

return <tr>{cells}</tr>;

});

return (

<table className="MyClassName">

<thead>

<tr>{titles}</tr>

</thead>

<tbody>{rows}</tbody>

</table>

);

}

有没有更好的方法来实现这一目标?

(我想for在模板代码或类似方法中嵌入循环。)

回答:

您可以将表达式放在大括号内。请注意,在已编译的JavaScript中,为什么for在JSX语法中永远不可能发生循环;JSX相当于函数调用和加糖的函数参数。仅允许使用表达式。

(此外:请记住将key属性添加到在循环内渲染的组件。)

render() {

return (

<table className="MyClassName">

<thead>

<tr>

{this.props.titles.map(title =>

<th key={title}>{title}</th>

)}

</tr>

</thead>

<tbody>

{this.props.rows.map((row, i) =>

<tr key={i}>

{row.map((col, j) =>

<td key={j}>{col}</td>

)}

</tr>

)}

</tbody>

</table>

);

}

render: function() {

return (

React.DOM.table({className: "MyClassName"},

React.DOM.thead(null,

React.DOM.tr(null,

this.props.titles.map(function(title) {

return React.DOM.th({key: title}, title);

})

)

),

React.DOM.tbody(null,

this.props.rows.map(function(row, i) {

return (

React.DOM.tr({key: i},

row.map(function(col, j) {

return React.DOM.td({key: j}, col);

})

)

);

})

)

)

);

}

以上是 如何渲染重复的React元素? 的全部内容, 来源链接: utcz.com/qa/404782.html

回到顶部