当前位置:  开发笔记 > 运维 > 正文

React Router-如何确定是否按下了“后退”按钮?

如何解决《ReactRouter-如何确定是否按下了“后退”按钮?》经验,为你挑选了1个好方法。

我有这些情况

设置页面->结果页面->详细信息页面

用户选择设置,单击下一步,获取结果,然后单击以查看更多详细信息。

详细信息页面->结果页面

用户从“详细信息”页面返回到“结果”页面。这将导致完全重新渲染,这使我再次毫无意义地访问服务器(我将结果存储在数组中)。

详细信息页面->结果页面->设置页面->结果页面

用户转到详细信息,然后返回到结果(想要获取存储的结果),然后返回到设置页面,进行更改,然后返回到结果页面(现在我想要再次从服务器完全获取)。

我想知道React Router是否可以确定我是否通过浏览器历史记录访​​问了该页面,或者我是否正在前进。



1> 小智..:

我一直在寻找相同的东西,然后终于找到了一个看似简单的解决方案。

快速回答:

我使用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 = () => (
    
        
< ..... Other routes here ..... >
); 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 } ) => (
     (
            
)} { ...rest } /> ); export default PublicRoute;

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有