首頁 web前端 前端問答 react跳轉前記住頁面狀態怎麼實現

react跳轉前記住頁面狀態怎麼實現

Jan 06, 2023 pm 01:59 PM
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。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

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,例如:

1

2

3

4

5

6

7

8

componentWillUnmount() {

    const { dispatch } = this.props;

    const { activeKey } = this.state;

    dispatch({

      type: "projectInfo/setProjectInfoPage",

      payload: { activeKey }

    });

  }

登入後複製

頁面重新載入時,例如:

1

2

3

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
PHP、Vue和React:如何選擇最適合的前端框架? PHP、Vue和React:如何選擇最適合的前端框架? Mar 15, 2024 pm 05:48 PM

PHP、Vue和React:如何選擇最適合的前端框架?隨著互聯網技術的不斷發展,前端框架在Web開發中起著至關重要的作用。 PHP、Vue和React作為三種代表性的前端框架,每一種都具有其獨特的特徵和優勢。在選擇使用哪種前端框架時,開發人員需要根據專案需求、團隊技能和個人偏好做出明智的決策。本文將透過比較PHP、Vue和React這三種前端框架的特徵和使

Java框架與前端React框架的整合 Java框架與前端React框架的整合 Jun 01, 2024 pm 03:16 PM

Java框架與React框架的整合:步驟:設定後端Java框架。建立專案結構。配置建置工具。建立React應用程式。編寫RESTAPI端點。配置通訊機制。實戰案例(SpringBoot+React):Java程式碼:定義RESTfulAPI控制器。 React程式碼:取得並顯示API回傳的資料。

3秒跳轉頁面實作方法:PHP程式指南 3秒跳轉頁面實作方法:PHP程式指南 Mar 25, 2024 am 10:42 AM

標題:3秒跳轉頁面實作方法:PHP程式設計指南在網頁開發中,頁面跳轉是常見的操作,一般情況下我們使用HTML中的meta標籤或JavaScript的方法進行頁面跳轉。不過,在某些特定的情況下,我們需要在伺服器端進行頁面跳轉。本文將介紹如何使用PHP程式實作一個在3秒內自動跳到指定頁面的功能,同時會給出具體的程式碼範例。 PHP實現頁面跳躍的基本原理PHP是一種在

PHP程式設計技巧:如何實現3秒內跳轉網頁 PHP程式設計技巧:如何實現3秒內跳轉網頁 Mar 24, 2024 am 09:18 AM

標題:PHP程式設計技巧:如何實現3秒內跳轉網頁在Web開發中,經常會遇到需要在一定時間內自動跳到另一個頁面的情況。本文將介紹如何使用PHP實作在3秒內實現頁面跳轉的程式設計技巧,並提供具體的程式碼範例。首先,實現頁面跳轉的基本原理是透過HTTP的回應頭中的Location欄位來實現。透過設定該欄位可以讓瀏覽器自動跳到指定的頁面。下面是一個簡單的例子,示範如何在P

PHP跳轉頁面並攜帶POST資料的實作方法 PHP跳轉頁面並攜帶POST資料的實作方法 Mar 22, 2024 am 10:42 AM

PHP是一種廣泛應用於網站開發的程式語言,而頁面跳躍並攜帶POST資料是在網站開發中常見的需求。本文將介紹如何實現PHP頁面跳轉並攜帶POST數據,包括具體的程式碼範例。在PHP中,頁面跳躍一般透過header函數實現。如果需要在跳轉過程中攜帶POST數據,可以透過以下步驟完成:首先,建立一個包含表單的頁面,使用者在該頁面填寫資訊並點擊提交按鈕。在表單的acti

vue.js vs.反應:特定於項目的考慮因素 vue.js vs.反應:特定於項目的考慮因素 Apr 09, 2025 am 12:01 AM

Vue.js適合中小型項目和快速迭代,React適用於大型複雜應用。 1)Vue.js易於上手,適用於團隊經驗不足或項目規模較小的情況。 2)React的生態系統更豐富,適合有高性能需求和復雜功能需求的項目。

PHP登入跳轉問題排查與解決技巧 PHP登入跳轉問題排查與解決技巧 Mar 16, 2024 am 11:27 AM

PHP登入跳轉問題排查與解決技巧簡介:在Web開發中,實現使用者登入功能是非常常見的操作。然而,有時使用者登入後卻無法正確跳到指定頁面,這可能是因為存在一些常見的問題影響了跳躍的實作。本文將介紹一些PHP登入跳轉問題的排查與解決技巧,並提供具體的程式碼範例來幫助讀者更好地理解和解決這類問題。問題一:登入後無法正確跳轉問題描述:使用者登入後應該跳到指定的頁面,

React在HTML中的作用:增強用戶體驗 React在HTML中的作用:增強用戶體驗 Apr 09, 2025 am 12:11 AM

React通過JSX與HTML結合,提升用戶體驗。 1)JSX嵌入HTML,使開發更直觀。 2)虛擬DOM機制優化性能,減少DOM操作。 3)組件化管理UI,提高可維護性。 4)狀態管理和事件處理增強交互性。

See all articles