You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React项目使用map遍历如何仅取第一个元素避免按钮重复渲染

方案说明

可以使用indexOf相关逻辑实现去重需求,可根据实际业务场景选择以下两种适配方案:

方案1:同链接仅保留1个按钮(多链接仍渲染多个)

如果你的需求是对返回结果中detailsUrl重复的条目去重,不同链接仍保留对应按钮,可先对数组去重后再遍历:

const ButtonGroup = (linksReturn) => {
  // 按照detailsUrl字段去重,仅保留每个链接第一次出现的条目
  const uniqueLinkList = linksReturn.filter((item, index, self) => 
    self.findIndex(i => i.detailsUrl === item.detailsUrl) === index
  )
  return uniqueLinkList.map((urlAdress, index) => (
    <div key={index}>
        {/* 注意:原生button不支持href属性,建议替换为a标签实现跳转 */}
        <a
          target="_blank"
          href={urlAdress.detailsUrl}
          rel="noopener noreferrer"
        >
          Acess Link
        </a>
      </div>
  ));
};

方案2:无论返回多少条仅渲染1个按钮

如果你的需求是永远只渲染1个按钮(默认取第一条返回结果的链接),不需要使用map遍历,直接取数组第一项即可,性能更高:

const ButtonGroup = (linksReturn) => {
  // 空值判断避免数组为空时报错
  if (!Array.isArray(linksReturn) || !linksReturn.length) return null
  return (
    <div>
      <a
        target="_blank"
        href={linksReturn[0].detailsUrl}
        rel="noopener noreferrer"
      >
        Acess Link
      </a>
    </div>
  )
};

额外优化提示

你代码中给button添加href属性的写法不符合规范,原生button标签没有href属性,跳转功能建议替换为a标签,并补充rel="noopener noreferrer"属性避免新页面安全风险。


内容的提问来源于stack exchange,提问作者Cezene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:48:03