为了账号安全,请及时绑定邮箱和手机立即绑定

React 条件渲染映射数组

React 条件渲染映射数组

万千封印 2023-07-20 16:18:55
我在这个codesandbox中重现了我的场景我有一个包含 5 个元素的标签数组const tagsList = ["Covid 19", "Business", "Energy", "Sport", "Politics"];我正在为我的Chip组件的每个标签进行映射  {tagsList.map((tag) => (    <Chip label={tag} />  ))}我想说的是,如果标签列表长度大于2(这是我在codesandbox中的情况),则向我显示带有剩余标签的芯片,即3(长度-2)。我怎样才能在同一个地图功能中制作?还有其他办法吗?
查看完整描述

3 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

tagsList.slice(2)如果列表大小大于 2,则可以使用。


export default function OutlinedChips() {

  const classes = useStyles();


  const tagsList = ["Covid 19", "Business","Energy", "Sport", "Politics"];


  return (

    <div className={classes.root}>

      {(tagsList.length > 2 ? tagsList.slice(2) : tagsList).map((tag) => (

        <Chip label={tag} />

      ))}

    </div>

  );

}

工作代码 - https://codesandbox.io/s/material-demo-forked-31f2w?file=/demo.js


查看完整回答
反对 回复 2023-07-20
?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果你不介意不从位置 0 开始,你可以这样做:


<div className={classes.root}>

      {(tagsList.length > 2 ? tagsList.slice(3, 5) : tagsList).map((tag) => (

        <Chip label={tag} />

      ))}

      {tagsList.length > 2 && <Chip label={tagsList.length - 2} /> }

</div>


查看完整回答
反对 回复 2023-07-20
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您可以在映射函数中收集索引(列表中元素的位置)并根据您的需要进行操作,如果我理解正确的话,您可以执行以下操作:


return (

    <div className={classes.root}>

      {/* Change to shortTagsList for check the shortest */}

      {tagsList.map((tag, index) => {

        let length = tagsList.length;

        console.log(length);

        return (

          (length > 2 && index > 2 && <Chip label={tag} />) ||

          (length <= 2 && <Chip label={tag} />)

        );

      })}

    </div>

  );

代码沙盒


查看完整回答
反对 回复 2023-07-20
  • 3 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信