【问题标题】:How to <Link> to same page如何 <Link> 到同一页面
【发布时间】:2016-06-28 22:58:22
【问题描述】:

我正在转换一些现有代码以使用 React Router。

代码当前使用&lt;a href="#" ...&gt;,我将其更改为&lt;Link to=??&gt;

我的问题是: "to" 参数应该使用什么?如果我使用to="#",应用程序将路由到“/”,这不是我想要的。

如果我使用当前路由名称,它可以工作,但href="#" 的整个想法是代码不必知道它是如何访问的。

我正在使用带有 history=browserHistory 的 React Router 2。

【问题讨论】:

标签: react-router


【解决方案1】:

我认为你可以尝试或多或少这样的事情:

&lt;Link to={window.location.pathname} hash="/#"&gt;HASH&lt;/Link&gt;

请看:https://github.com/reactjs/react-router/blob/master/docs/API.md#hash

【讨论】:

  • 这不起作用,但是使用 props 参数的提示是一个很好的提示。我将在正式的“答案”中给出解决方案。谢谢。
【解决方案2】:

这是因为“this.props.route.path”是到当前页面的路由:

<Link to={this.props.route.path} ...

请注意,如果您有嵌套的 React 组件,则必须从外部组件向下传递“this.path”,如 https://facebook.github.io/react/docs/transferring-props.html 所述

【讨论】:

    【解决方案3】:
    <Link to='#' />
    

    这可行,但它仍会堆积您的历史记录

    【讨论】:

      【解决方案4】:

      对我来说,这是解决方案:

      我使用了 npm 模块react-router-hash-link。它很容易使用。 Docs here

      import { HashLink as Link } from 'react-router-hash-link'; <Link smooth to="/#services">Services</Link>

      并将您的 &lt;App&gt; 组件包装在来自 npm 模块 react-router-dom&lt;HashRouter&gt;

      stackoverflow answer

      【讨论】:

        【解决方案5】:

        以下是一些对我有用的解决方案:

        • &lt;Link to={{}}&gt;
        • &lt;Link to={{ search: '' }}&gt;
          • 在我的具体情况下,我想留在同一页面上,但清除搜索参数,这就是这样做的
        • &lt;Link to={window.location.pathname}&gt;
        • &lt;Link to="#"&gt;
          • 这对我来说似乎工作正常,可能是因为我使用的是 react-router v6

        什么对我不起作用:

        • &lt;Link to={this.props.route.path}
          • 我正在使用功能组件,所以我没有任何this.props。也许 react-router API 中还有另一种获取路径的方法。
        • &lt;Link to="."&gt;
          • 此链接为我链接到 /

        【讨论】:

          【解决方案6】:

          它对我有用:

          <Link className="dropdown-item" to="javascript:void()">
             Link Title
          </Link>
          

          【讨论】:

            【解决方案7】:

            如果您需要转到“/”路径的指定部分(甚至从另一个路径),您也可以使其与锚标记一起使用,如下所示:

            &lt;a href="./#your-section-id"&gt;Go to Section&lt;/a&gt;

            希望这会有所帮助。

            【讨论】:

            猜你喜欢
            • 2022-01-09
            • 2020-05-10
            • 2014-09-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-06
            • 2011-06-26
            • 2014-04-20
            相关资源
            最近更新 更多