찾다
웹 프론트엔드프런트엔드 Q&A반응 점프 전 페이지 상태를 기억하는 방법

React는 점프하기 전에 페이지 상태를 기억하는 방법을 구현합니다. 1. 경로 변경을 모니터링하고 경로가 변경되면 lastPath 및 currentPath를 redux 저장소로 업데이트합니다. 2. 페이지 A를 떠날 때 페이지 상태를 redux 저장소에 저장합니다. 3. Redux Store의 lastPath가 페이지 B의 경로와 동일하면 A는 B에 의해 복원된 상태로 복귀된 것으로 간주되며, 그렇지 않으면 복원되지 않습니다.

반응 점프 전 페이지 상태를 기억하는 방법

이 튜토리얼의 운영 환경: Windows 10 시스템, 반응 버전 18.0.0, Dell G3 컴퓨터.

React로 이동하기 전에 페이지 상태를 기억하는 방법은 무엇입니까?

React 페이지는 마지막 상태를 유지하기 위해 돌아갑니다.

Requirements

  • 페이지 A는 페이지 B로 이동한 다음 페이지 A로 돌아갑니다. 페이지 A는 떠나기 전에 상태를 복원해야 합니다. A와 B 페이지에는 여러 개의 입구가 있습니다. 다른 페이지에서 A 페이지로 이동하면 A 페이지는 상태를 복원하지 않습니다.

  • Design

경로 변경을 모니터링하고 경로가 변경되면 lastPath 및 currentPath를 redux 저장소로 업데이트합니다.

  • 페이지 A를 떠날 때 페이지 상태를 redux 저장소에 저장합니다. 페이지 A에 진입할 때, redux store의 lastPath가 페이지 B의 경로와 같다면 A는 B에 의해 복원된 상태로 복귀된 것으로 간주되고, 그렇지 않으면 복원되지 않는다.

  • Implementation
  • 이 프로젝트는 React-router + dva 라이브러리를 사용하며 구현 부분에는 관련 기술이 포함됩니다.

  • 경로 변경 사항을 모니터링하고, 기록을 통해 경로 변경 사항을 모니터링하고, lastPath 및 currentPath를 기록합니다. 여기서 DVA 구독은 히스토리를 구독하는 데 사용되며 경로가 변경되면 경로 정보가 상태에 동기화됩니다.
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 스토어에 동기화합니다. 예:

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가 반환될 때 상태 추가,history.push({ pathname: path, state: {from} });, 페이지 A에 들어가서 여부를 판단합니다. 페이지 B에서 돌아온 상태를 기반으로 합니다. 하지만 B에 여러 항목이 있는 경우 반환할 때 페이지의 소스를 알아야 합니다. 그렇지 않으면 반환할 수 없으며 논리가 약간 복잡하고 오류가 발생하기 쉽습니다.

요약

이 글에서는 페이지에 여러 입구와 출구가 있는 상황에 적합한 마지막 상태를 유지하기 위한 페이지 반환 솔루션을 제안합니다. 이 솔루션은 이력 변경을 모니터링하고 마지막 페이지 주소를 기록하는 방식을 사용하여 상태 복원 여부에 대한 근거를 제공합니다.

추천 학습: "

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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.