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

解決vue中使用history.replaceState?更改url?vue?router?無法感知的問題

 更新時間:2022年09月19日 11:04:15   作者:Gleason.  
這篇文章主要介紹了vue中使用history.replaceState?更改url?vue?router?無法感知的問題,本文給大家分享修復這個問題的方法,需要的朋友可以參考下

vue中使用history.replaceState 更改url vue router 無法感知的問題

描述

最近做一個需求,URL更新不刷新頁面,在網(wǎng)上找了 好多文章都說 router.replace 更新URL不會刷新頁面(前提是路由為 history 模式),我也用了,一開始是沒問題的,可以實現(xiàn)需求,但是后來URL變得越來越復雜,會導致URL更新時,會觸發(fā)mounted執(zhí)行,這樣的話頁面就會刷新,后來更換了 history.replaceState API 更新URL,頁面確實不刷新了,但是也帶來了新的問題,就是 vue router 無法感知到URL的變化 ,舉個例子吧

假設

url:www.eg.com/index?a=1
使用router.replace 更新 url this.$router.replace('www.eg.com/index?a=2')
輸出 fullpath console.log(this.$route.fullPath) => www.eg.com/index?a=2
這個結(jié)果是對的;

如果使用 history.replaceState 更新url就會出現(xiàn)問題
使用 history.replaceState 更新 url history.replaceState(null,'','www.eg.com/index?a=2');url 確實是更新了,
輸出 fullpath console.log(this.$route.fullPath) => www.eg.com/index?a=1

結(jié)論: this.$route 就沒有被更新

如何修復這個問題

// 這個 stateObj 其實就是查詢參數(shù)的 key value 轉(zhuǎn)換成的對象
const stateObj = {
	a:2,
	b:3
}
history.replaceState(stateObj, 'title', 'www.eg.com/index?a=2&b=3')
// 將原來的 this.$route 克隆一份
const _route = Object.assign({},this.$route);
// 更新 fullPath 
_route.fullPath = 'www.eg.com/index?a=2&b=3'
// 更新 參數(shù)
_route.params = stateObj
// 調(diào)用 router.history 里的更新方法 cb 傳入最新的route就可以了
this.$router.history.cb(_route)
// 我們再次輸出 fullPath
console.log(this.$route.fullPath) => 'www.eg.com/index?a=2&b=3'

問題到這里就修復了

其實 使用 history api 更新 URL 這個功能 react router 早在 V3 版本就已經(jīng)實現(xiàn)了,話說這已經(jīng)是 5 ,6 年前的問題了, 也就是說 使用 history api 更新url react router 是可以感知到 URL 變化的并且會被記錄,但是vue沒有,還好有router.history.cb這個回掉,不然神仙都解決不了這個問題。。。。

到此這篇關于vue中使用history.replaceState 更改url vue router 無法感知的問題的文章就介紹到這了,更多相關vue url vue router內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue package.json文件的使用及說明

    vue package.json文件的使用及說明

    `package.json`是Node.js和npm項目的核心配置文件,定義了項目的元數(shù)據(jù)和依賴項,在Vue項目中,它管理依賴、提供腳本命令、存儲項目信息,并通過語義化版本控制確保項目穩(wěn)定
    2025-01-01
  • Vue自定義v-has指令,做按鈕權(quán)限判斷的步驟

    Vue自定義v-has指令,做按鈕權(quán)限判斷的步驟

    這篇文章主要介紹了Vue自定義v-has指令,做按鈕權(quán)限判斷的步驟,幫助大家更好的理解和學習使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • vue中$emit傳遞多個參(arguments和$event)

    vue中$emit傳遞多個參(arguments和$event)

    本文主要介紹了vue中$emit傳遞多個參(arguments和$event),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • VUE項目中SASS的使用及說明

    VUE項目中SASS的使用及說明

    這篇文章主要介紹了VUE項目中SASS的使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Vue?運行高德地圖官方樣例,設置class無效的解決

    Vue?運行高德地圖官方樣例,設置class無效的解決

    這篇文章主要介紹了Vue?運行高德地圖官方樣例,設置class無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • 如何通過Vue自帶服務器實現(xiàn)Ajax請求跨域(vue-cli)

    如何通過Vue自帶服務器實現(xiàn)Ajax請求跨域(vue-cli)

    從A頁面訪問到B頁面,并且要獲取到B頁面上的數(shù)據(jù),而兩個頁面所在的端口、協(xié)議和域名中哪怕有一個不對等,那么這種行為就叫跨域,這篇文章給大家介紹如何通過Vue自帶服務器實現(xiàn)Ajax請求跨域(vue-cli),感興趣的朋友一起看看吧
    2023-10-10
  • Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼

    Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼

    本篇文章主要介紹了Vue配合iView實現(xiàn)省市二級聯(lián)動的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Vue實現(xiàn)多標簽選擇器

    Vue實現(xiàn)多標簽選擇器

    這篇文章主要為大家詳細介紹了Vue實現(xiàn)多標簽選擇器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Vue仿Bibibili首頁的問題

    Vue仿Bibibili首頁的問題

    這篇文章主要介紹了Vue仿Bibibili首頁,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 詳解vue2.6插槽更新v-slot用法總結(jié)

    詳解vue2.6插槽更新v-slot用法總結(jié)

    在 2.6.0 中,我們?yōu)榫呙宀酆妥饔糜虿宀垡肓艘粋€新的統(tǒng)一的語法 (即 v-slot 指令)。這篇文章主要介紹了詳解vue2.6插槽更新v-slot用法總結(jié),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03

最新評論

彩票| 宁远县| 五家渠市| 扶余县| 蕉岭县| 津南区| 库尔勒市| 吴川市| 淮南市| 赤峰市| 广水市| 阿拉善盟| 慈溪市| 仲巴县| 锦州市| 黑龙江省| 华池县| 彭州市| 渝北区| 莫力| 汶上县| 山东| 锡林郭勒盟| 靖远县| 永城市| 新干县| 文山县| 云和县| 交口县| 扶余县| 太湖县| 浮山县| 浏阳市| 汾西县| 沁源县| 秦安县| 上高县| 汶川县| 台北市| 张掖市| 平陆县|