javascript - 如何根据某些条件动态渲染两层元素
问题描述
假设svg是父元素,rect将是最终渲染中的子元素。我想在不同的变化状态下渲染它
对于每 5 个矩形将有一个svg父级,因此如果rect值为 8 ,它将呈现为第一个svg具有 5 个子元素和第二个svg剩余3 个元素
const Svg = ({total}) => {
let rects = total
let totalSvgs = Math.ceil(rects/5)
return(
// i have tried using map and for-loops here
)
}
解决方案
总结将你Rects
分成一系列rectChunks
......这将使map
......
const rects = []; /** your rect objs */
const svgs = []; /** your svg objs */
const chunkSize = 5;
const rectLength = rects.length;
const svgLength = Math.ceil(rectLength / chunkSize);
/** 1. Divide your array of rects into an array of small chunks of size 5 */
const rectChunks = [];
for (let i = 0; i < rectLength; i += chunkSize) {
const chunk = rects.slice(i, i + chunkSize);
rectChunks.push(chunk);
}
/** 2. Render */
return svgs.map((svgItem, index) => (
<Svg {...svgItem}>
{rectChunks[index].map(rectItem => (
<Rect {...rectItem} />
))}
</Svg>
));
推荐阅读
- python - 如何从 Python 中的特定字母输出字符串的其余部分?
- c++ - 在 C++ 中的非托管可执行文件中运行托管可执行文件
- python - Alembic env.py 不读取 Flask 项目中的环境变量
- r - 导出为 pdf 时,ggsave 会更改图形
- dotnetnuke - Timelinejs, 2sxc 更改字体和语言
- reactjs - 与 GCP HTTP 端点反应
- kubernetes - 如何在 WSL 中访问 Kubernetes 集群节点
- angularjs - 使用 ng-repeat 和 $index 设置模型属性
- caching - 在 Snowflake 虚拟仓库的工作节点中如何处理缓存一致性?
- mysql - 使用 mysql 命令从一个 docker 容器到另一个