最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、背景

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

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

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

二、參考方法

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

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

2、react-activation,嘗試未果

3、react-kepper,需要將項(xiàng)目的react-router替換掉,風(fēng)險(xiǎn)較大,慎用

4、react-router-cache-route,簡(jiǎn)單易用,最佳方案

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

就是把Switch替換成CacheSwitch,因?yàn)橐驗(yàn)镾witch組件只保留第一個(gè)匹配狀態(tài)的路由,卸載掉其他路由

把Route替換成CacheRoute

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

但當(dāng)使用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;

動(dòng)態(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>
    );
}

動(dòng)態(tài)理由,加判斷標(biāo)志位:cache,只有傳遞了cache頁(yè)面才能被緩存,沒(méi)有傳遞cache,就用普通路由形式

{
    path: '/PageA',
    component: PageA,
    cache:true,//判斷標(biāo)志位
},
{
    path: '/PageB',
    component: PageB,
},

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

//緩存A頁(yè)面跳轉(zhuǎn)至other頁(yè)面()
componentDidCache = () => {
    console.log('List cached')
}
//緩存恢復(fù)(從other頁(yè)面跳轉(zhuǎn)返回A頁(yè)面)
componentDidRecover = () => {
    // 這里可以更新業(yè)務(wù)數(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實(shí)現(xiàn)緩存頁(yè)面流程介紹的文章就介紹到這了,更多相關(guān)React router cache route內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React Native中Mobx的使用方法詳解

    React Native中Mobx的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于React Native中Mobx的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • React實(shí)現(xiàn)簡(jiǎn)單登錄的項(xiàng)目實(shí)踐

    React實(shí)現(xiàn)簡(jiǎn)單登錄的項(xiàng)目實(shí)踐

    登錄、注冊(cè)、找回密碼是前端項(xiàng)目經(jīng)常遇到的需求,本文主要介紹了React實(shí)現(xiàn)簡(jiǎn)單登錄的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • React項(xiàng)目中decorators裝飾器報(bào)錯(cuò)問(wèn)題解決方案

    React項(xiàng)目中decorators裝飾器報(bào)錯(cuò)問(wèn)題解決方案

    這篇文章主要介紹了React項(xiàng)目中decorators裝飾器報(bào)錯(cuò),本文給大家分享問(wèn)題所在原因及解決方案,通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • React引入antd-mobile+postcss搭建移動(dòng)端

    React引入antd-mobile+postcss搭建移動(dòng)端

    本文給大家分享React引入antd-mobile+postcss搭建移動(dòng)端的詳細(xì)流程,文末給大家分享我的一些經(jīng)驗(yàn)記錄使用antd-mobile時(shí)發(fā)現(xiàn)我之前配置的postcss失效了,防止大家踩坑,特此把解決方案分享到腳本之家平臺(tái),需要的朋友參考下吧
    2021-06-06
  • React事件處理和表單的綁定詳解

    React事件處理和表單的綁定詳解

    這篇文章主要介紹了React事件處理和表單的綁定,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 詳解使用webpack+electron+reactJs開(kāi)發(fā)windows桌面應(yīng)用

    詳解使用webpack+electron+reactJs開(kāi)發(fā)windows桌面應(yīng)用

    這篇文章主要介紹了詳解使用webpack+electron+reactJs開(kāi)發(fā)windows桌面應(yīng)用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • React 非父子組件傳參的實(shí)例代碼

    React 非父子組件傳參的實(shí)例代碼

    React 主要用于構(gòu)建UI,很多人認(rèn)為 React 是 MVC 中的 V(視圖)。本文給大家介紹React 非父子組件傳參的相關(guān)知識(shí),感興趣的朋友跟隨一起看看吧
    2021-04-04
  • React組件設(shè)計(jì)模式之組合組件應(yīng)用實(shí)例分析

    React組件設(shè)計(jì)模式之組合組件應(yīng)用實(shí)例分析

    這篇文章主要介紹了React組件設(shè)計(jì)模式之組合組件,結(jié)合實(shí)例形式分析了React組件設(shè)計(jì)模式中組合組件相關(guān)概念、原理、應(yīng)用場(chǎng)景與操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • react使用mobx封裝管理用戶登錄的store示例詳解

    react使用mobx封裝管理用戶登錄的store示例詳解

    這篇文章主要介紹了react基于mobx封裝管理用戶登錄的store,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 詳解React native全局變量的使用(跨組件的通信)

    詳解React native全局變量的使用(跨組件的通信)

    本篇文章主要介紹了詳解React native全局變量的使用(跨組件的通信),具有一定的參考價(jià)值,有興趣的同學(xué)可以了解一下
    2017-09-09

最新評(píng)論

牟定县| 东乡| 香河县| SHOW| 桐柏县| 交口县| 浦东新区| 茂名市| 磐安县| 铜鼓县| 文山县| 乌兰浩特市| 宜兰县| 峨边| 正宁县| 吕梁市| 嵊州市| 乌兰浩特市| 永川市| 黑山县| 萨嘎县| 建水县| 驻马店市| 上虞市| 合作市| 宁阳县| 调兵山市| 库尔勒市| 遂昌县| 香河县| 郓城县| 塔河县| 牟定县| 新乡县| 林西县| 綦江县| 秦皇岛市| 芒康县| 泰兴市| 临颍县| 广宁县|