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

React中a标签跳转外部链接时打开本地子路由而非目标链接问题

问题原因

你遇到的跳转异常是因为href属性传入的www.youtube.com没有携带http://或https://协议头,浏览器会默认将不带协议的路径识别为当前站点的相对路径,自动拼接在当前域名(localhost:3000)后面,所以会触发本地子路由请求。

解决方案

方案1:直接补全协议头(适用于所有item.link都是外部站点的场景)

直接给所有外部链接加上https://前缀即可,两种实现方式:

  • 赋值时直接补全:将item.link的赋值改为"https://www.youtube.com"
  • 模板字符串拼接:在a标签处直接拼接协议
<a href={`https://${item.link}`} target="_blank" rel="noopener noreferrer">{item.about}</a>

注意:该方案需要保证item.link本身不会携带协议头,否则会出现https://https://xxx.com的格式错误

方案2:加逻辑判断自动补全(适用于同时存在内部相对路径、外部链接的场景)

先写一个工具函数判断链接是否已经带协议,没有的话再自动补全:

const getValidHref = (link) => {
  if (!link) return '#'
  // 匹配http/https开头的链接
  return /^https?:\/\//.test(link) ? link : `https://${link}`
}

然后在a标签中调用该函数即可:

<a href={getValidHref(item.link)} target="_blank" rel="noopener noreferrer">{item.about}</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:18:00