reactjs - React router v4 历史记录,有没有办法获取您导航的网址?

标签 reactjs react-router

在旧版本的 React Router 中,状态有一个 redirectPath 状态对象,您可以从中获取以前的 URL。在新版本中,情况不再如此。通过 history.push 导航到新 URL 时,显示的只是新 URL,没有明显的方法来获取您之前导航的 URL。 React Router 或 history 包本身是否有一些功能允许您获取以前的 URL?

我们正在使用 goBack,这似乎可行,但如果用户要离开应用程序(例如谷歌)的页面并返回到应用程序,则 goBack 函数将再次路由到谷歌。我们该如何解决这个问题?

谢谢

最佳答案

您可以在 state: {} 中推送额外信息喜欢

<Link to={{ pathname: '/about', state: { fromHome: true } }}>About</Link>

然后当路由改变时,你可以访问state对象并检查用户如何导航到您的路线。

今天我创建了包 react-router-last-location其中提供:

  • withLastLocation() , 通过 lastLocation 的高阶分量作为组件的 Prop
  • <LastLocationProvider />应在内部使用的组件 <Router /> .

示例用法

您应用的入口点

import React from 'react';
import { render } from 'react-dom';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import { LastLocationProvider } from 'react-router-last-location';
import Home from './pages/Home';
import About from './pages/About';
import Contact from './pages/Contact';
import Logger from './components/Logger';

const App = () => (
  <Router>
    <LastLocationProvider>
      <div>
        <ul>
          <li><Link to="/">Home</Link></li>
          <li><Link to="/about">About</Link></li>
          <li><Link to="/contact">Contact</Link></li>
        </ul>

        <hr />

        <Route exact path="/" component={Home} />
        <Route path="/about" component={About} />
        <Route path="/contact" component={Contact} />

        <hr />

        <Logger />
      </div>
    </LastLocationProvider>
  </Router>
);

render(<App />, document.getElementById('root'));

应该有权访问最后位置的组件

import React from 'react';
import { withLastLocation } from 'react-router-last-location';

const Logger = ({ lastLocation }) => (
  <div>
    <h2>Logger!</h2>
    <pre>
      {JSON.stringify(lastLocation)}
    </pre>
  </div>
);

export default withLastLocation(Logger);

你可以从 npm 安装它

npm install react-router-last-location --save

关于reactjs - React router v4 历史记录,有没有办法获取您导航的网址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44121244/

相关文章:

reactjs - react native 开始给出无效的正则表达式无效错误

reactjs - 我正在尝试将加载器函数数组发送到我的路由,它会抛出错误 Handler is not a function in a reactJs application

reactjs - CloudFront错误: This XML file does not appear to have any style information associated with it

express - 允许express将路由传递给react-router

javascript - React-router-dom 重定向不起作用 - 显示错误

javascript - React 6 导航和点击没有按预期工作

reactjs - 使用react-router-dom成功进行身份验证后将用户重定向到他们请求的页面

javascript - 使用 useState、React 时 Hook 调用无效

javascript - 带点符号的文字属性返回未定义

javascript - 获取id值并将其设置为react中的状态