我有这些情况
设置页面->结果页面->详细信息页面
用户选择设置,单击下一步,获取结果,然后单击以查看更多详细信息。
详细信息页面->结果页面
用户从“详细信息”页面返回到“结果”页面。这将导致完全重新渲染,这使我再次毫无意义地访问服务器(我将结果存储在数组中)。
详细信息页面->结果页面->设置页面->结果页面
用户转到详细信息,然后返回到结果(想要获取存储的结果),然后返回到设置页面,进行更改,然后返回到结果页面(现在我想要再次从服务器完全获取)。
我想知道React Router是否可以确定我是否通过浏览器历史记录访问了该页面,或者我是否正在前进。
我一直在寻找相同的东西,然后终于找到了一个看似简单的解决方案。
快速回答:
我使用history.action
值来确定用户是来自后退按钮还是来自经典导航。如果history.action
等于,'POP'
则单击后退按钮。否则为'PUSH'
。
详细答案:
我可以通过每个页面的道具访问历史记录,因为我这样做是:
哪里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 = () => (); export default AppRouter; < ..... Other routes here ..... >
和PublicRoute
组件是类似的东西:
import React from 'react'; import { Route } from 'react-router-dom'; import Header from '../components/header/Header'; const PublicRoute = ( { component: Component, ...rest } ) => (( )} { ...rest } /> ); export default PublicRoute;