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

react路由跳轉(zhuǎn)傳參刷新頁(yè)面后參數(shù)丟失的解決

 更新時(shí)間:2023年06月07日 09:34:14   作者:司寧  
這篇文章主要介紹了react路由跳轉(zhuǎn)傳參刷新頁(yè)面后參數(shù)丟失的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

react路由跳轉(zhuǎn)傳參刷新頁(yè)面后參數(shù)丟失

import { useHistory } from 'react-router-dom';
const history = useHistory();
history.push({
? ? ? pathname: '/details',
? ? ? state: {
? ? ? ? name: name,
? ? ? ? id: id,
? ? ? },
});

在history中使用state確實(shí)可以傳參數(shù),在進(jìn)入頁(yè)面時(shí)可以正常顯示,但是在刷新頁(yè)面后state里面的數(shù)據(jù)會(huì)清空,頁(yè)面就無(wú)法正常顯示。

import { useHistory } from 'react-router-dom';
const history = useHistory();
history.push({
? ? ? pathname: '/details',
? ? ? query: {
? ? ? ? name: name,
? ? ? ? id: id,
? ? ? },
});

使用query是在跳轉(zhuǎn)鏈接中增加參數(shù),可以在實(shí)現(xiàn)傳參的同時(shí)刷新頁(yè)面后數(shù)據(jù)不會(huì)丟失,但是如果傳的參數(shù)過(guò)多鏈接會(huì)很長(zhǎng)。

import { useLocation } from 'react-router-dom';
const location = useLocation();
const name = location.query.name;
const id = location.query.id;
// 獲取state參數(shù)的寫法
const name = location.state.name;
const id = location.state.id;

這是在跳轉(zhuǎn)頁(yè)面獲取參數(shù)的方式

(親測(cè)有效,但是會(huì)有類型報(bào)錯(cuò))

react路由組件選擇與頁(yè)面刷新問(wèn)題

總結(jié)最近 React 開(kāi)發(fā)遇到的幾個(gè)問(wèn)題及解決過(guò)程。

state 跳轉(zhuǎn)數(shù)據(jù)丟失問(wèn)題

通過(guò) state 傳遞數(shù)據(jù)的方式進(jìn)行跳轉(zhuǎn)時(shí),如果 F5 刷新頁(yè)面,會(huì)丟失參數(shù)導(dǎo)致頁(yè)面異常。

解決辦法之一可以用緩存:

// 如果是刷新頁(yè)面,則沒(méi)有 state 屬性,從緩存中獲取
if(this.props.location.state == undefined) {
?? ?this.props.location.state = JSON.parse(sessionStorage.getItem('data'));
}
if(this.props.location.state != undefined) {
?? ?sessionStorage.setItem('data',JSON.stringify(this.props.location.state));
} else {
?? ?// 緩存和path 都沒(méi)有參數(shù),則設(shè)置默認(rèn)屬性,保證頁(yè)面不報(bào)錯(cuò)
?? ?this.props.location.state = {
?? ? ?// TODO 默認(rèn)的參數(shù)配置,保證頁(yè)面不報(bào)錯(cuò)
?? ?};
}

將請(qǐng)求參數(shù)轉(zhuǎn)換為 JSON 字符串緩存到本地,網(wǎng)上還有一種方式是用 Qs 轉(zhuǎn)換,測(cè)試發(fā)現(xiàn)它有一個(gè)問(wèn)題,就是數(shù)值類型的的值被序列化為字符串了,導(dǎo)致數(shù)據(jù)類型與之前不一致。

如果清空了緩存后,再執(zhí)行刷新操作,那么 else 分支中配置的默認(rèn)參數(shù)會(huì)生效。

search 方式

筆記簡(jiǎn)單的跳轉(zhuǎn)方式是用 search 方式,將參數(shù)序列化。

用 Qs 序列化數(shù)據(jù)到 search 后瀏覽器地址欄會(huì)變得特別長(zhǎng),感覺(jué)不是很友好。

antd Table 的分頁(yè)配置

antd 的 Table 組件,它的pagination 配置中,決定當(dāng)前頁(yè)碼的參數(shù)名叫 current,在一些跳轉(zhuǎn)返回的需求中,可能返回列表的頁(yè)碼不是初始 1,此時(shí)需要注意參數(shù)名稱。

這個(gè)參數(shù)名稱容易與后臺(tái)提交時(shí)的分頁(yè)參數(shù)弄混,所以必須牢記。

BrowserRouter 刷新后 404 問(wèn)題

如果 React 項(xiàng)目使用 BrowserRouter 的路由,存在一個(gè)問(wèn)題,F(xiàn)5 刷新頁(yè)面的時(shí)候,會(huì)出現(xiàn) 404 空白頁(yè)。

解決辦法是改成 HashRouter ,改完后重新打包后可能會(huì)因?yàn)闉g覽器緩存問(wèn)題,看不到效果,所以及時(shí)清理緩存。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • React表單容器的通用解決方案

    React表單容器的通用解決方案

    本文主要介紹了React表單容器的通用解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • React冒泡和阻止冒泡的應(yīng)用詳解

    React冒泡和阻止冒泡的應(yīng)用詳解

    這篇文章主要介紹了React冒泡和阻止冒泡的應(yīng)用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • React18中startTransition與useTransition的使用

    React18中startTransition與useTransition的使用

    本文主要介紹了React18中startTransition與useTransition的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • React中常用的一些鉤子函數(shù)總結(jié)

    React中常用的一些鉤子函數(shù)總結(jié)

    這篇文章給大家總結(jié)了React中常用的一些鉤子函數(shù),文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • React父組件如何調(diào)用子組件的方法推薦

    React父組件如何調(diào)用子組件的方法推薦

    在React中,我們經(jīng)常在子組件中調(diào)用父組件的方法,一般用props回調(diào)即可,這篇文章主要介紹了React父組件如何調(diào)用子組件的方法推薦,需要的朋友可以參考下
    2023-11-11
  • 詳解React-Native全球化多語(yǔ)言切換工具庫(kù)react-native-i18n

    詳解React-Native全球化多語(yǔ)言切換工具庫(kù)react-native-i18n

    這篇文章主要介紹了詳解React-Native全球化語(yǔ)言切換工具庫(kù)react-native-i18n,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 在react中使用highlight.js將頁(yè)面上的代碼高亮的方法

    在react中使用highlight.js將頁(yè)面上的代碼高亮的方法

    本文通過(guò) highlight.js 庫(kù)實(shí)現(xiàn)對(duì)文章正文 HTML 中的代碼元素自動(dòng)添加語(yǔ)法高亮,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-01-01
  • 詳解React如何優(yōu)雅地根據(jù)prop更新state值

    詳解React如何優(yōu)雅地根據(jù)prop更新state值

    這篇文章主要為大家詳細(xì)介紹了React如何優(yōu)雅地實(shí)現(xiàn)根據(jù)prop更新state值,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以了解下
    2023-11-11
  • 在React Native中添加自定義字體的方法詳解

    在React Native中添加自定義字體的方法詳解

    在這篇指南中,我們將探索使用 Google Fonts 在 React Native 應(yīng)用中添加自定義字體的方法,字體是優(yōu)秀用戶體驗(yàn)的基石,使用定制字體可以為你的應(yīng)用程序提供獨(dú)特的身份,需要的朋友可以參考下
    2024-02-02
  • react.js框架Redux基礎(chǔ)案例詳解

    react.js框架Redux基礎(chǔ)案例詳解

    這篇文章主要介紹了react.js框架Redux基礎(chǔ)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

广宁县| 阳江市| 乌兰县| 阜康市| 兴化市| 滨海县| 确山县| 马山县| 湖南省| 玉溪市| 福海县| 澄江县| 红河县| 高台县| 淳化县| 乐至县| 龙门县| 营山县| 霍邱县| 响水县| 永年县| 蒙山县| 海门市| 包头市| 宜良县| 宁都县| 平罗县| 木兰县| 枝江市| 平顺县| 宁陵县| 肃南| 织金县| 内乡县| 西盟| 晋江市| 荥经县| 赤峰市| 枝江市| 夹江县| 阜宁县|