我一直在寻找同样的东西,然后我终于找到了一个看起来很简单的解决方案。
快速回答:
我使用history.action
value 来确定用户是来自后退按钮还是来自经典导航。如果history.action
等于'POP'
则后退按钮已被击中。否则就是'PUSH'
。
详细解答:
我可以在每个页面的props中访问历史记录,因为我做了这样的事情:
<Provider store = { store }>
<AppRouter />
</Provider>
在哪里AppRouter
:
import React from 'react';
import { Router, Route, Switch } from 'react-router-dom';
import createHistory from 'history/createBrowserHistory';
import PublicRoute from './PublicRoute';
import PageHome from '../pages/front/home/PageHome';
export const history = createHistory();
const AppRouter = () => (
<Router history={ history }>
<div>
<Switch>
<PublicRoute
exact = { true }
path = "/"
component = { PageHome }
history={ history }
/>
< ..... Other routes here ..... >
</Switch>
</div>
</Router>
);
export default AppRouter;
和PublicRoute
组件是类似的东西:
import React from 'react';
import { Route } from 'react-router-dom';
import Header from '../components/header/Header';
const PublicRoute = ( { component: Component, ...rest } ) => (
<Route
component={ ( props ) => (
<div>
<Header />
<Component { ...props } />
</div>
)}
{ ...rest }
/>
);
export default PublicRoute;