【发布时间】:2020-07-07 07:34:53
【问题描述】:
我想每行渲染 3 张来自我的 redux 状态的图像。我已经设法使用下面的代码使其工作,但对我来说似乎非常草率。有没有更好的做法来实现这一目标? 我使用 if 语句检查图像是否未定义的那一行是因为有时我有许多图像不是 3 的倍数,这会使我的循环中断。
function renderImages(){
let imgList = [];
let j = 0;
let counter = 3;
for (var i = 0; i < Math.ceil(images.length / 3); i++){
const insideDiv = [];
for (j; j < counter; j++){
if(typeof images[j] !== 'undefined'){
insideDiv.push(
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[0]} alt={images[j].ref}/>
</div>
);
};
};
counter += 3
imgList.push(
<div className="row row-emphasized">
{insideDiv}
</div>
)
};
return imgList;
};
想要的输出:
<div className="row row-emphasized">
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[1]} alt={images[1].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[2]} alt={images[2].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[3]} alt={images[3].ref}/>
</div>
</div>
<div className="row row-emphasized">
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[4]} alt={images[4].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[5]} alt={images[5].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[6]} alt={images[6].ref}/>
</div>
</div>
<div className="row row-emphasized">
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[7]} alt={images[7].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[8]} alt={images[8].ref}/>
</div>
<div id='blank-col' className="col col-sm col-emphasized">
<img className='tile-img' src={images[j].img[9]} alt={images[9].ref}/>
</div>
</div>
非常感谢任何帮助。
【问题讨论】:
标签: reactjs loops redux nested jsx