React中根据数组元素数量条件渲染括号样式的问题求助
解决React手风琴括号的条件渲染问题
看起来你现在的核心问题是没能正确获取数组的长度以及判断当前项是否为最后一项,导致条件渲染逻辑失效。咱们一步步来修正:
先明确你的需求逻辑
你需要:
- 当下拉区域的
feed数组只有1项时,渲染单.bracket元素 - 当
feed数组有多项时,最后一项渲染单.bracket,其余项渲染.bracket_container
修正React代码的关键点
React的map方法可以传递三个参数:当前项、当前索引、原数组本身。咱们正好可以利用index和array.length来做判断,同时要注意你之前代码里的feed.item是错误的,应该用数组的length属性。
另外,你原来代码里的.in_bracket应该是笔误,对应你给出的CSS应该是.bracket,我一起帮你修正了。
修正后的代码如下:
{/* OPEN CONTAINER */} {tracks?.uid === showConnections && tracks?.feed.map((item, index, array) => ( <div key={item.uid} className={style.sub_container_wrapper}> {/* 条件渲染括号:数组长度为1 或 当前是最后一项时,用单括号 */} {array.length === 1 || index === array.length - 1 ? ( <div className={style.bracket} /> ) : ( <div className={style.bracket_container}> <div className={style.bracket} /> <div className={style.bottom} /> </div> )} {/* 这里放你的下拉项内容 */} </div> ))}
代码解释
- 获取数组信息:通过
map的第三个参数array,我们可以直接拿到feed数组的完整内容,用array.length判断数组项数 - 判断最后一项:
index === array.length - 1是判断当前项是否为数组最后一项的标准写法(因为数组索引从0开始) - 条件分支调整:把符合条件(长度1或最后一项)的情况放在前面,渲染单括号;其余情况渲染括号容器,这样逻辑更清晰
这样调整后,应该就能符合你想要的视觉效果了。
内容的提问来源于stack exchange,提问作者Noble Polygon
相关产品推荐
相关产品推荐

