html 组件的 jsx 循环包装器
jsx loop wrapper for html component on condition
我想用 div 包装一个 ReactJS 组件,但我只想每 5 个项目包装一次元素。我已经设法()每 5 个项目添加换行符。
代码如下:
var Item = React.createClass({
render: function() {
return <span> {this.props.num}</span>;
}
});
var Hello = React.createClass({
render: function() {
var items = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ];
return <div>{items.map(function (i,index) {
if (index % 5 === 0) {
return [ <br />, <Item key={i} num={i} /> ];
}
return <Item key={i} num={i} />;
})}</div>;
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
这里是 JSFIDDLE
我还是想用.map函数循环遍历数组,更方便直观。
问题是如何用 <div>
而不是每 5 行 <br>
包装它?
抱歉造成混淆,这里有一个解释:
通缉:
<div>0 1 2 3 4</div>
<div>5 6 7 8 9</div>
我有:
0 1 2 3 4 <br />
5 6 7 8 9 <br />
Check out this JSFiddle. 它将输入数组分成五个批次,并将每个批次包装在 div
中。这些 div
——每个都有五个 Item
子组件——都包裹在另一个 div
中,这是 return
ed。
这是 render
函数:
render: function() {
var items = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ];
var fives = [];
while(items.length) {
fives.push(items.splice(0, 5));
}
return (
<div>
{fives.map(function (five, index) {
return (
<div key={index}>
{five.map(function (item, index) {
return (<Item key={index} num={item} />);
})}
</div>
);
})}
</div>
);
}
我想用 div 包装一个 ReactJS 组件,但我只想每 5 个项目包装一次元素。我已经设法(
代码如下:
var Item = React.createClass({
render: function() {
return <span> {this.props.num}</span>;
}
});
var Hello = React.createClass({
render: function() {
var items = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ];
return <div>{items.map(function (i,index) {
if (index % 5 === 0) {
return [ <br />, <Item key={i} num={i} /> ];
}
return <Item key={i} num={i} />;
})}</div>;
}
});
ReactDOM.render(
<Hello name="World" />,
document.getElementById('container')
);
这里是 JSFIDDLE
我还是想用.map函数循环遍历数组,更方便直观。
问题是如何用 <div>
而不是每 5 行 <br>
包装它?
抱歉造成混淆,这里有一个解释: 通缉:
<div>0 1 2 3 4</div>
<div>5 6 7 8 9</div>
我有:
0 1 2 3 4 <br />
5 6 7 8 9 <br />
Check out this JSFiddle. 它将输入数组分成五个批次,并将每个批次包装在 div
中。这些 div
——每个都有五个 Item
子组件——都包裹在另一个 div
中,这是 return
ed。
这是 render
函数:
render: function() {
var items = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 ];
var fives = [];
while(items.length) {
fives.push(items.splice(0, 5));
}
return (
<div>
{fives.map(function (five, index) {
return (
<div key={index}>
{five.map(function (item, index) {
return (<Item key={index} num={item} />);
})}
</div>
);
})}
</div>
);
}