搜索
首页web前端前端问答react跳转前记住页面状态怎么实现

react实现跳转前记住页面状态的方法:1、监听path变化,当path变化时更新lastPath和currentPath到redux store中;2、在离开页面A时,将页面状态保存到redux store中;3、如果redux store中的lastPath等于页面B的path,则认为A是由B返回还原状态,否则不还原。

react跳转前记住页面状态怎么实现

本教程操作环境:Windows10系统、react18.0.0版、Dell G3电脑。

react跳转前记住页面状态怎么实现?

React 页面返回保留上次状态

需求

  • 页面A跳转到页面B然后再返回页面A,页面A要还原离开前的状态;

  • 页面A和页面B有多个入口,从其它页面跳转到页面A,页面A不还原状态。

设计

  • 监听path变化,当path变化时更新lastPath和currentPath到redux store中;

  • 离开页面A时,将页面状态保存到redux store中;

  • 进入页面A时,如果redux store中的lastPath等于页面B的path,则认为A是由B返回还原状态,否则不还原。

实现

项目采用react-router + dva库,实现部分会涉及相关技术。

监听path变化,通过history监听path变化,并记录lastPath和currentPath。这里采用dva的subscriptions,订阅history,当path变化同步path信息到state。

const model = {
  namespace: "global",
  state: {
    pathName: { last: "", current: "" },
  },
  reducers: {
    setPathName(state: any, { pathName }: any) {
      state.pathName.last = state.pathName.current;
      state.pathName.current = pathName;
    },
   
  effects: {
  },
  subscriptions: {
    setup({ history, dispatch }: any) {
      return history.listen(({ pathName }: any) => {
        dispatch({ type: "global/setPathName", pathName });
      });
    }
  }
};

页面卸载时同步状态到redux store,比如:

componentWillUnmount() {
    const { dispatch } = this.props;
    const { activeKey } = this.state;
    dispatch({
      type: "projectInfo/setProjectInfoPage",
      payload: { activeKey }
    });
  }

页面重新加载时,比如:

state = {
    activeKey: pathToRegexp(PagePath.B).exec(pathName.last) ? activeKey : ""
  };

pathToRegexp来自path-to-regexp库,用于路由匹配,此处用来判断上个页面是否为页面B。

其它方案

A页面是否由B页面返回的判断:B页面返回时添加state,history.push({ pathname: path, state: {from} });,进入A页面根据state判断是否由B页面返回。但当B有多个入口,返回时需要知道页面来源,否则无法返回,逻辑稍显复杂且容易出错。

总结

本文提出了一种页面返回保留上次状态的解决方案,适用于页面有多个入口和出口的情况。该方案中采用了监听history变化的方式,记录上次页面地址,从而给是否还原状态提供了依据。

推荐学习:《react视频教程

以上是react跳转前记住页面状态怎么实现的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
如何实现PHP表单提交后的页面跳转如何实现PHP表单提交后的页面跳转Aug 12, 2023 am 11:30 AM

如何实现PHP表单提交后的页面跳转【简介】在Web开发中,表单的提交是一项常见的功能需求。当用户填写完表单并点击提交按钮后,通常需要将表单数据发送至服务器进行处理,并在处理完后将用户重定向至另一个页面。本文将介绍如何使用PHP来实现表单提交后的页面跳转。【步骤一:HTML表单】首先,我们需要在HTML页面中编写一个包含表单的页面,以便用户填写需要提交的数据。

php如何登录跳转传值php如何登录跳转传值Jun 05, 2023 am 10:44 AM

php登录跳转传值的方法:1、POST传值,使用html的“form”表单跳转的方法来进行post传值;2、GET传值,用<a>标签跳转进入xxx.php后,通过“$_GET['id']”获取传递的值;3、SESSION传值,一旦保存到SESSION中,其他页面都可以通过SESSION获取。

3秒跳转页面实现方法:PHP编程指南3秒跳转页面实现方法:PHP编程指南Mar 25, 2024 am 10:42 AM

标题:3秒跳转页面实现方法:PHP编程指南在网页开发中,页面跳转是常见的操作,一般情况下我们使用HTML中的meta标签或者JavaScript的方法进行页面跳转。不过,在某些特定的情况下,我们需要在服务器端进行页面跳转。本文将介绍如何使用PHP编程实现一个在3秒内自动跳转到指定页面的功能,同时会给出具体的代码示例。PHP实现页面跳转的基本原理PHP是一种在

跳转到指定页面的PHP代码实现方法跳转到指定页面的PHP代码实现方法Mar 07, 2024 pm 02:18 PM

在编写网站或应用程序时,经常会遇到需要跳转到指定页面的需求。在PHP中,我们可以通过几种方法来实现页面跳转。下面我将为您演示三种常用的跳转方法,包括使用header()函数、使用JavaScript代码和使用meta标签。使用header()函数header()函数是PHP中用来发送原始的HTTP头部信息的函数,在实现页面跳转时可以结合使用该函数。下面是一个

go语言中跳转语句有哪些go语言中跳转语句有哪些Dec 26, 2022 pm 04:33 PM

跳转语句有:1、break语句,用于退出循环或者退出一个switch语句,让程序继续执行循环之后的代码,语法“break;”;2、continue语句用于退出本次循环,并开始下一次循环,语法“continue;”;3、与标签结合跳转到指定的标签语句,语法“标签 + :”;4、goto语句,用于无条件地转移到程序中指定的行,语法“goto 标签;... ...标签: 表达式;”。

PHP编程技巧:如何实现3秒内跳转网页PHP编程技巧:如何实现3秒内跳转网页Mar 24, 2024 am 09:18 AM

标题:PHP编程技巧:如何实现3秒内跳转网页在Web开发中,经常会遇到需要在一定时间内自动跳转到另一个页面的情况。本文将介绍如何使用PHP实现在3秒内实现页面跳转的编程技巧,并提供具体的代码示例。首先,实现页面跳转的基本原理是通过HTTP的响应头中的Location字段来实现。通过设置该字段可以让浏览器自动跳转到指定的页面。下面是一个简单的例子,演示如何在P

跳转购物app怎么关闭跳转购物app怎么关闭Nov 29, 2023 pm 05:30 PM

关闭跳转购物app的方法:1、关闭应用内的跳转功能;2、更改浏览器设置;3、卸载更新或重新安装app。详细介绍:1、关闭应用内的跳转功能,打开购物app,在首页或搜索结果页中点击想要购买的商品,进入商品详情页后,不要直接点击“立即购买”或类似按钮,而是先点击页面右上角的“更多”或“设置”图标,在弹出的菜单中,找到“关闭跳转”或类似的选项,并点击它,确认关闭跳转功能等等。

php怎么实现隐藏地址跳转php怎么实现隐藏地址跳转Mar 22, 2023 am 11:24 AM

​在Web开发中,经常会遇到需要隐藏页面地址或者重定向页面的需求。由于浏览器地址栏的地址是可以随时被用户查看和修改的,所以要想实现真正的隐藏或者重定向页面地址,需要用到一些服务器端技术。其中,PHP是一种常用的服务器端脚本语言,可以用来实现隐藏地址跳转。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),