javascript - 为什么 gatsby 连接来自 a 标签的 url?
问题描述
我的页面包含一个远程服务的链接,它看起来像:
<a href={link} target="_blank" rel="noopener noreferrer">
<div className="appLink">{linkText}</div>
</a>
如果我的网址从https://
它开始,它会完美地在一个新标签中打开,但www.example.com
它会打开它loclahost:8000/www.example.com
为什么会发生?
我曾尝试使用Link
从 gatsby 导入的文件,但它的工作方式相同。
解决方案
这不仅仅是 Gatsby 特有的事情,它发生在所有的锚点上(实际上,<Link>
组件末端的行为就像一个锚点,但在 React 的范围内)。从MDN 文档中可以看到:
链接
超链接指向的 URL。链接不限于基于 HTTP 的 URL——它们可以使用浏览器支持的任何 URL 方案
如果您不添加 HTTP(s) 协议,它会被解释为您使用的是相对路径,因此它会连接到当前域。您可以在这篇绝对路径与相对路径/链接文章中查看更多详细信息。
请记住,该<Link>
组件仅用于内部导航。对于外部导航,您必须使用标准<a>
标签。
推荐阅读
- ruby-on-rails - sqlite3引擎需要与rails分开安装吗?
- angular - 排除服务器端渲染的模块 - Angular 8 Universal
- tensorflow - 将 Spark protobuf RDD 保存到 tfrecords
- php - 使用 PHP GD 库保存 jpg 图像时如何禁用子采样?
- android - React-Native:Hermes 未启用
- reactjs - 访问样式化组件 nth-child 时出现问题
- d3.js - d3.line 不为折线图生成输出
- android - 如何在 Google Pixel XL 上打开视频库?
- oop - 如何在 Fortran 中使用多态数据类型作为另一种数据类型的属性
- android - 如何使用 Jetpack 的导航在片段中使用工具栏但不能在活动中使用工具栏