📅  最后修改于: 2023-12-03 15:04:48.777000             🧑  作者: Mango
在 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>
);
这样做可以实现在不刷新页面的情况下跳转到外部链接,并且可以正确匹配路由规则。注意,我们需要手动添加 target
和 rel
属性来使链接在新标签页中打开,并且防范跨站点脚本攻击。此外,我们还需要将 Link
组件的 component
属性设置为 ExternalLink
组件来正确渲染链接。
本文介绍了如何在 React 中使用 Link
组件实现跳转到外部站点链接的功能。我们可以使用普通的 a
标签、Link
组件或自定义的 ExternalLink
组件来实现这个功能。无论使用哪种方法,我们都需要注意安全性和用户体验。