gpt4 book ai didi

javascript - 根据条件对 html 组件进行 jsx 循环包装

转载 作者:行者123 更新时间:2023-11-28 18:54:39 26 4
gpt4 key购买 nike

我想用 div 包装一个 ReactJS 组件,但我只想每 5 个项目包装一次 elemnt。我已成功 ( with little help ) 每 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> 包裹它而不是<br>每 5 行一次?

很抱歉造成困惑,这里有一个解释:想要:

<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 s--每个有五个Item组件作为子组件 - 都包装在另一个 div 中,即return编辑。

这是 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>
);
}

关于javascript - 根据条件对 html 组件进行 jsx 循环包装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33856949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com