当前位置: 首页 > 知识库问答 >
问题:

如何与react路由器一起使用普通锚定链接

山高峰
2023-03-14

非常类似于这个角度问题:当使用react路由器时,如何使用锚定链接进行页面内导航?

换句话说,我如何实现以下纯超文本标记语言时使用反应路由器?

<a href="#faq-1">Question 1</a>
<a href="#faq-2">Question 2</a>
<a href="#faq-3">Question 3</a>

<h3 id="faq-1">Question 1</h3>
<h3 id="faq-2">Question 2</h3>
<h3 id="fa1-3">Question 3</h3>

目前我截取这种链接上的点击,并滚动到锚位置。这并不令人满意,因为这意味着不可能直接链接到页面的某个部分。

共有3个答案

嵇光临
2023-03-14

从'react router dom'导入{Link}

链接使用

然后在目标React组件(主页)中插入以下代码

useEffect(() => {
    const hash = props.history.location.hash
    // Check if there is a hash and if an element with that id exists
    const el = hash && document.getElementById(hash.substr(1))
    if (el) {    
        el.scrollIntoView({behavior: "smooth"})
    }
}, [props.history.location.hash]) // Fires every time hash changes

常乐
2023-03-14

路由器哈希链接对我有用。易于安装和实施:

$ npm install --save react-router-hash-link

在您的组件中。js将其作为链接导入:

import { HashLink as Link } from 'react-router-hash-link';

而不是使用锚

<Link to="#faq-1>Question 1</Link>
<Link to="#faq-2>Question 2</Link>
<Link to="#faq-3>Question 3</Link>

注意:我使用了HashRouter而不是Router

缪坚诚
2023-03-14

锚点链接的问题是react-router的默认值是使用URL中的哈希来维护状态。幸运的是,您可以根据位置留档将默认行为替换为其他行为。在你的例子中,你可能想要使用历史位置对象尝试“干净的网址”,这意味着react-router不会使用网址哈希。像这样尝试一下:

Router.run(routes, Router.HistoryLocation, function (Handler) {
  React.render(<Handler/>, document.body);
});
 类似资料:
  • 我正在尝试使用react router(版本^1.0.3)做一个简单的重定向到另一个视图的操作,我只是觉得有些累。 我只需要将用法发送到“/login”,就这样。 我能做什么? 控制台中的错误: 未捕获的引用错误:未定义PropType 用我的路线归档

  • 我正在尝试使用angular与主播合作,我已经做了我的研究,但没有成功,所以我正在联系你们。 我有 3 个组件 {导航栏组件, 红色组件, 蓝色组件} 导航栏组件有 2 个锚点。我希望当我单击其中一个时,它实际上会将我引导到正确的组件 导航栏组件.ts 红色. component.ts blue.component.ts app.component.html 应用程序模块

  • 我正在使用React和React路由器尝试将我的组件链接到一个项目中。我想从主页(当前组件)链接一张图片到另一个组件。 目前我可以点击图片,它有点像一个链接(有时点击后变成蓝色),尽管它没有链接到其他组件,没有错误显示,网址栏中没有任何变化。什么都没发生。 有什么想法吗?这是我的代码: 代码错误:react dom。发展js:17117上述错误发生在组件中:img(由Home创建)中div(由Ho

  • 令人惊讶的是,在Google和StackOverflow中很难找到它,我在这里问,在React路由器中使用

  • 本文向大家介绍react的路由和普通路由有什么区别?相关面试题,主要包含被问及react的路由和普通路由有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 如果不使用 React Router,组件之间的嵌套,会使URL变得复杂,为了让我们的 URL 解析变得更智能,我们需要编写很多代码来实现指定 URL 应该渲染哪一个嵌套的 UI 组件分支。 而React Router 知道如何为我们搭建嵌

  • 我有一个使用vue创建的单页应用程序,导航链接都是使用标记完成的。导航中有几个项目我的老板想在导航中使用,但禁用了,这样人们就可以看到一些即将推出的功能。然而,我不知道如何完全禁用路由器链接! 不执行任何操作,不执行任何操作(我尝试将其发送到一个函数,看看这是否会阻止单击,但它只是调用函数并路由,尽管存在阻止),添加一个