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

React Router <Link />跳转异常:如何正确配置外部链接?

React Router
return (<Link />)
跳转外部URL异常的解决方法

问题原因

React Router 的 <Link /> 组件是为单页应用内部路由跳转设计的。当你传入带完整 HTTP/HTTPS 协议的 URL 时,它不会识别为外部链接,反而会将该 URL 当作当前路由下的相对路径进行拼接,最终导致出现嵌套 URL 的错误。

解决办法

方法一:使用原生 <a> 标签(推荐)

如果跳转目标是外部域名或完整 URL,直接使用原生 <a> 标签即可,这是最符合场景的方案:

<a
  key={key}
  href={link.url}
  target="_blank" // 可选,需要新窗口打开时添加
  rel="noopener noreferrer" // 安全属性,防止恶意页面利用 window.opener 窃取数据
>
  {link.label}
</a>

如果业务场景必须使用 <Link /> 组件,可以通过判断 URL 是否包含协议头,手动处理外部跳转逻辑:

import { Link, useNavigate } from 'react-router-dom';

function YourComponent({ links }) {
  const navigate = useNavigate();

  const handleExternalJump = (url) => {
    window.location.href = url;
  };

  return (
    <div>
      {links.map((link, key) => {
        if (link.url.startsWith('http')) {
          return (
            <span
              key={key}
              onClick={() => handleExternalJump(link.url)}
              style={{ cursor: 'pointer', color: '#0066cc', textDecoration: 'underline' }}
            >
              {link.label}
            </span>
          );
        }
        return (
          <Link key={key} to={link.url}>
            {link.label}
          </Link>
        );
      })}
    </div>
  );
}

核心提示

React Router 的 <Link /> 本质是用来管理 SPA 内部路由状态的组件,外部链接场景下优先使用原生 <a> 标签,既简洁又符合组件设计初衷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:05:16