亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

React router cache route實現(xiàn)緩存頁面流程介紹

 更新時間:2023年01月10日 14:02:34   作者:山鬼taro  
react-router自身沒有路由緩存的特性,在5.x版本之前,我們可以基于react-router-cache-route來實現(xiàn)路由緩存功能。但是react-router 6.x在實現(xiàn)上做了比較大的變化,react-router-cache-route沒有提供相應的支持

一、背景

在開發(fā)中,從A頁面跳轉(zhuǎn)到other頁面,再返回A頁面時react-router會直接刷新頁面,導致A頁面中已加載的海量數(shù)據(jù)狀態(tài)丟失,需要重新加載,用戶體驗不佳,所以必須將海量數(shù)據(jù)狀態(tài)進行緩存。

(在小編的實際場景中,A頁面是一堆模型&業(yè)務數(shù)據(jù)標注點,由于模型永遠不會更改,但是加載又很緩慢,因此,希望從other頁面返回A頁面時,模型不會重新加載,但是需要更新業(yè)務數(shù)據(jù)。)

(其他應用場景舉例:開發(fā)中有從詳情頁返回列表頁的需求,這樣一來頁面返回后使用react-router會直接刷新頁面,導致頁面中的分頁和搜索條件全部丟失,用戶體驗不佳,所以就必須將列表頁的狀態(tài)進行緩存。)

二、參考方法

網(wǎng)上搜索大概有幾種方法:

1、使用localStorage/sessionStorage進行頁面的狀態(tài)的保存,跳轉(zhuǎn)頁面后再進行獲取,這種方法雖然可行,但是從根本來說還是從新向后臺再一次請求了數(shù)據(jù),不算最佳方案。

2、react-activation,嘗試未果

3、react-kepper,需要將項目的react-router替換掉,風險較大,慎用

4、react-router-cache-route,簡單易用,最佳方案

三、react-router-cache-route的使用

就是把Switch替換成CacheSwitch,因為因為Switch組件只保留第一個匹配狀態(tài)的路由,卸載掉其他路由

把Route替換成CacheRoute

注意:other面回退A頁面時使用this.props.history.push(‘’路徑’)可以實現(xiàn)頁面的緩存

但當使用this.props.history.go(-1)則緩存失敗

四、具體步驟

1、替換Switch和Route

靜態(tài)路由

import React,{Component} from 'react'
import { Route} from 'react-router-dom'
import {CacheRoute,CacheSwitch} from 'react-router-cache-route'
import PageA from './demo/PageA.js'
import PageB from './demo/PageB.js'
import PageOther from './demo/PageOther.js'
class App extends Component{
    render(){
        return(
            <div className='App'>
                    <CacheSwitch>                   
                        <CacheRoute exact path='/platform/PageA' component={PageA}/>                    
                        <Route path='/platform/PageB' component={PageB}/>
                        <Route path='/platform/PageOther' component={PageOther}/>                       
                    </CacheSwitch>
            </div>
        )
    }
}
export default App;

動態(tài)路由

function AppRouter() {
    return (
        <Router history={history}>
            <AppContainer>
                <CustomHeader />
                <CacheSwitch>
                    {routes.map((route: RouteType, index: number) => {
                        return route.cache ? (
                            <CacheRoute
                                exact={true}
                                path={`/${route.routerPath}`}
                                key={index}
                                component={route.component}
                            />
                        ) : (
                            <Route
                                // strict={true}
                                exact={true}
                                path={`/${route.routerPath}`}
                                key={index}
                                component={route.component}
                            />
                        );
                    })}
                    <Redirect to="/login" />
                </CacheSwitch>
            </AppContainer>
        </Router>
    );
}

動態(tài)理由,加判斷標志位:cache,只有傳遞了cache頁面才能被緩存,沒有傳遞cache,就用普通路由形式

{
    path: '/PageA',
    component: PageA,
    cache:true,//判斷標志位
},
{
    path: '/PageB',
    component: PageB,
},

2、如何更新其他想要更新的業(yè)務數(shù)據(jù)

//緩存A頁面跳轉(zhuǎn)至other頁面()
componentDidCache = () => {
    console.log('List cached')
}
//緩存恢復(從other頁面跳轉(zhuǎn)返回A頁面)
componentDidRecover = () => {
    // 這里可以更新業(yè)務數(shù)據(jù)
    console.log('List recovered')
}

3、參考

https://github.com/CJY0208/react-router-cache-route/blob/HEAD/README_CN.md

到此這篇關(guān)于React router cache route實現(xiàn)緩存頁面流程介紹的文章就介紹到這了,更多相關(guān)React router cache route內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • react 父組件與子組件之間的值傳遞的方法

    react 父組件與子組件之間的值傳遞的方法

    本篇文章主要介紹了react 父組件與子組件之間的值傳遞的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • React?redux?原理及使用詳解

    React?redux?原理及使用詳解

    這篇文章主要為大家介紹了React?redux?原理及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 搭建React?Native熱更新平臺的詳細過程

    搭建React?Native熱更新平臺的詳細過程

    這篇文章主要介紹了搭建React?Native熱更新平臺,要實現(xiàn)?React?Native?熱更新功能,有四種思路?Code?Push、Pushy、Expo?和自研,感興趣的朋友一起通過本文學習吧
    2022-05-05
  • React如何立即更新DOM

    React如何立即更新DOM

    這篇文章主要介紹了React如何立即更新DOM問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • React錯誤邊界Error Boundaries

    React錯誤邊界Error Boundaries

    錯誤邊界是一種React組件,這種組件可以捕獲發(fā)生在其子組件樹任何位置的JavaScript錯誤,并打印這些錯誤,同時展示降級UI,而并不會渲染那些發(fā)生崩潰的子組件樹
    2023-01-01
  • React中useState和useEffect的用法詳解

    React中useState和useEffect的用法詳解

    Hooks?發(fā)布之后,函數(shù)組件能擁有自己的?state,React提供了很多內(nèi)置的Hooks,這篇文章就來和大家介紹一下useState?和?useEffect的使用,需要的可以參考一下
    2023-06-06
  • 在create-react-app中使用sass的方法示例

    在create-react-app中使用sass的方法示例

    這篇文章主要介紹了在create-react-app中使用sass的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • ReactJS中的自定義組件實例代碼

    ReactJS中的自定義組件實例代碼

    React 是一個用于構(gòu)建用戶界面的 JAVASCRIPT 庫。這篇文章主要介紹了ReactJS中的自定義組件的代碼講解,需要的朋友可以參考下
    2019-11-11
  • 詳解React中共享組件邏輯的三種方式

    詳解React中共享組件邏輯的三種方式

    這篇文章主要介紹了詳解React中共享組件邏輯的三種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • 詳解React中錯誤邊界的原理實現(xiàn)與應用

    詳解React中錯誤邊界的原理實現(xiàn)與應用

    在React中,錯誤邊界是一種特殊的組件,用于捕獲其子組件樹中發(fā)生的JavaScript錯誤,并防止這些錯誤冒泡至更高層,導致整個應用崩潰,下面我們就來看看它的具體應用吧
    2024-03-03

最新評論