📜  React Link 中的外部站点链接 - Javascript (1)

📅  最后修改于: 2023-12-03 15:04:48.777000             🧑  作者: Mango

React Link 中的外部站点链接 - Javascript

在 React 中,我们通常使用 Link 组件来实现路由跳转。但是,有时我们需要实现跳转到外部站点链接的功能。本文将介绍如何在 React 中使用 Link 组件实现跳转到外部站点链接的功能。

方法一:使用 a 标签

我们可以使用普通的 a 标签来实现跳转到外部站点链接的功能。例如:

<a href="https://www.example.com">跳转到外部链接</a>

但是,这样做有一个问题:页面会刷新。如果我们想要实现在不刷新页面的情况下跳转到外部链接,可以使用 Link 组件。

方法二:使用 Link 组件

我们可以使用 Link 组件来实现在不刷新页面的情况下跳转到外部链接的功能。例如:

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

<Link to="https://www.example.com">跳转到外部链接</Link>

这样做可以实现不刷新页面的跳转。但是,这样做还有一个问题:当我们点击链接时,React Router 会将 to 属性作为路由规则进行匹配,从而导致匹配失败。为了解决这个问题,我们可以使用一个额外的组件来包装 Link 组件。

方法三:使用 ExternalLink 组件

我们可以使用一个名为 ExternalLink 的组件来实现在不刷新页面的情况下跳转到外部链接的功能。例如:

import React from 'react';
import { Link } from 'react-router-dom';

const ExternalLink = ({ href, children, ...rest }) => (
  <a
    href={href}
    target="_blank"
    rel="noopener noreferrer"
    {...rest}
  >
    {children}
  </a>
);

const App = () => (
  <Link
    to="/"
    component={ExternalLink}
    href="https://www.example.com"
  >
    跳转到外部链接
  </Link>
);

这样做可以实现在不刷新页面的情况下跳转到外部链接,并且可以正确匹配路由规则。注意,我们需要手动添加 targetrel 属性来使链接在新标签页中打开,并且防范跨站点脚本攻击。此外,我们还需要将 Link 组件的 component 属性设置为 ExternalLink 组件来正确渲染链接。

总结

本文介绍了如何在 React 中使用 Link 组件实现跳转到外部站点链接的功能。我们可以使用普通的 a 标签、Link 组件或自定义的 ExternalLink 组件来实现这个功能。无论使用哪种方法,我们都需要注意安全性和用户体验。