【问题标题】:React Router v4 How to <Link> replace only when pathname changeReact Router v4如何仅在路径名更改时<Link>替换
【发布时间】:2017-06-23 23:42:55
【问题描述】:

我正在尝试使用 react-router v4 制作菜单导航

示例代码

<BrowserRouter>
  <Link to="/">Home</Link>
  <Link to="/about">About</Link>
</BrowserRouter>
// ...
<Switch>
  <Route exact path="/" component={Home} />
  <Route exact path="/about" component={About} />    
  <Route component={NotFound} />
</Switch>

问题

这段代码可以正常工作,但是每次我点击一个链接。 BrowserHistory 总是有推送新的位置,导致浏览器后退/前进不正确。

例如。当我点击主页 5 次时,它应该只是推 1 次并替换 4 次

仅在使用 BrowserRouter 时出现问题(HashRouter 正常工作)

Ex: BrowserRouter
Ex: HashRouter

我只想在路径不变时进行链接替换。
有可能吗?有什么简单的方法吗?

【问题讨论】:

    标签: reactjs react-router react-router-dom


    【解决方案1】:

    如果您希望链接替换历史堆栈中的当前条目,您应该使用&lt;Link /&gt; 组件上的replace 属性。

    查看更多信息:https://reacttraining.com/react-router/web/api/Link/replace-bool

    在 github 上查看此讨论:https://github.com/ReactTraining/react-router/issues/3776

    【讨论】:

    • 我只想在路径不变的情况下进行链接替换。有可能吗?
    • replace 是一个布尔值,你可以根据你的情况将它设置为 true 或 false
    • 我知道,但是我想知道如何检查下一个路径和上一个路径以使替换条件起作用。如果我的问题不清楚,我很抱歉。 // 问题更新
    猜你喜欢
    • 2017-10-02
    • 2017-09-04
    • 2018-05-25
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    相关资源
    最近更新 更多