你可以在state: {}
推額外的信息,如
<Link to={{ pathname: '/about', state: { fromHome: true } }}>About</Link>
然後當路線發生了變化,你可以訪問state
對象並檢查用戶如何瀏覽到您的路線。
今天我創建其提供包react-router-last-location
:
withLastLocation()
,高階分量通過lastLocation
爲道具給組件
<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
我有問題。我可以使用什麼財產來檢查路線計劃先行的位置?我想確保goBack只能路由到我的應用程序,而不是外部URL。 –
只要檢查'lastLocation!== null'。它僅跟蹤應用程序中的路由更改。它不訪問瀏覽器歷史記錄,例如:https://jsfiddle.net/8nx3unp9/ – hinok
感謝您的回答。檢查你的組件與我在其他站點中關注的例子幾乎相同。我沒有使用你的組件,因爲它在我的應用程序啓動時出錯。我會繼續嘗試並檢查是否可以找到答案。謝謝 –