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

vue中watch監(jiān)聽路由傳來的參數(shù)變化問題

 更新時(shí)間:2023年07月14日 14:15:44   作者:imsopoor  
這篇文章主要介紹了vue中watch監(jiān)聽路由傳來的參數(shù)變化,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

vue中watch監(jiān)聽路由傳來的參數(shù)變化

一個(gè)組件內(nèi)寫了個(gè)編程路由,通過交互觸發(fā)

 this.$router.push({
          name: "Result",
          query: {
            // 發(fā)送搜索詞給result
            title: this.inputVal,
          },

在接收參數(shù)的路由組件中watch內(nèi)

 watch: {
    // 監(jiān)視搜索詞變化
    "$route.query.title": {
      immediate: true,
      handler() {
        this.search();
      },
    },
  },

這樣直接監(jiān)視傳來的參數(shù)有效

如果用data接收參數(shù),在監(jiān)視就沒效在data內(nèi)

 data() {
    return {
      searchVal:this.$route.query.title,
      }
   }
 watch: {
    // 監(jiān)視搜索詞變化
    searchVal: {
      immediate: true,
      deep: true,
      handler() {
        console.log("a");
        this.search();
      },
    },
  },

深度監(jiān)視也無效

vue-router如何響應(yīng)路由參數(shù)的變化(watch監(jiān)聽|導(dǎo)航守衛(wèi))

什么是路由參數(shù)的變化

當(dāng)使用路由參數(shù)時(shí),例如從 /user/foo 導(dǎo)航到 /user/bar,原來的組件實(shí)例會(huì)被復(fù)用。因?yàn)閮蓚€(gè)路由都渲染同個(gè)組件,比起銷毀再創(chuàng)建,復(fù)用則顯得更加高效。不過,這也意味著組件的生命周期鉤子不會(huì)再被調(diào)用。

監(jiān)測(cè)路由參數(shù)變化的方法(watch監(jiān)聽|導(dǎo)航守衛(wèi))

方法一watch監(jiān)聽

watch: { // watch的第一種寫法
$route (to, from) {
console.log(to)
console.log(from)
}
},
watch: { // watch的第二種寫法
$route: {
handler (to, from){
console.log(to)
console.log(from)
},
// 深度觀察監(jiān)聽
deep: true
}
},
watch: { // watch的第三種寫法
'$route':'getPath'
},
methods: {
getPath(to, from){
console.log(this.$route.path);
}
},
----------------------------------------------------------------
舉例:
watch: {
// 方法1 //監(jiān)聽路由是否變化
'$route' (to, from) {
if(to.query.id !== from.query.id){
this.id = to.query.id;
this.init();//重新加載數(shù)據(jù)
}
}
}
//方法 2 設(shè)置路徑變化時(shí)的處理函數(shù)
watch: {
'$route': {
handler: 'init',
immediate: true
}
為了實(shí)現(xiàn)這樣的效果可以給router-view添加一個(gè)不同的key,這樣即使是公用組件,只要url變化了,就一定會(huì)重新創(chuàng)建這個(gè)組件。
<router-view :key="$route.fullpath"></router-view>

方法二:導(dǎo)航守衛(wèi)

beforeRouteEnter (to, from, next) {
console.log('beforeRouteEnter被調(diào)用:在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用')
// 在渲染該組件的對(duì)應(yīng)路由被 confirm 前調(diào)用
// 不!能!獲取組件實(shí)例 `this` 因?yàn)楫?dāng)守衛(wèi)執(zhí)行前,組件實(shí)例還沒被創(chuàng)建
// 可以通過傳一個(gè)回調(diào)給 next來訪問組件實(shí)例。在導(dǎo)航被確認(rèn)的時(shí)候執(zhí)行回調(diào),并且把組件實(shí)例作為回調(diào)方法的參數(shù)。
next(vm => {
// 通過 `vm` 訪問組件實(shí)例
console.log(vm)
})
},
// beforeRouteEnter 是支持給 next 傳遞回調(diào)的唯一守衛(wèi)。
// 對(duì)于 beforeRouteUpdate 和 beforeRouteLeave 來說,this 已經(jīng)可用了,所以不支持傳遞回調(diào),因?yàn)闆]有必要了。
beforeRouteUpdate (to, from, next) {
// 在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用
// 舉例來說,對(duì)于一個(gè)帶有動(dòng)態(tài)參數(shù)的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉(zhuǎn)的時(shí)候,
// 由于會(huì)渲染同樣的 Foo 組件,因此組件實(shí)例會(huì)被復(fù)用。而這個(gè)鉤子就會(huì)在這個(gè)情況下被調(diào)用。
// 可以訪問組件實(shí)例 `this`
console.log('beforeRouteUpdate被調(diào)用:在當(dāng)前路由改變,但是該組件被復(fù)用時(shí)調(diào)用')
next()
},
beforeRouteLeave (to, from, next) {
// 導(dǎo)航離開該組件的對(duì)應(yīng)路由時(shí)調(diào)用
// 可以訪問組件實(shí)例 `this`
const answer = window.confirm('是否確認(rèn)離開當(dāng)前頁面')
if (answer) {
console.log('beforeRouteLeave被調(diào)用:導(dǎo)航離開該組件的對(duì)應(yīng)路由時(shí)調(diào)用')
next()
} else {
next(false)
}
},

到此這篇關(guān)于vue中watch監(jiān)聽路由傳來的參數(shù)變化的文章就介紹到這了,更多相關(guān)vue watch監(jiān)聽路由內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談vue項(xiàng)目如何打包扔向服務(wù)器

    淺談vue項(xiàng)目如何打包扔向服務(wù)器

    本篇文章主要介紹了淺談vue項(xiàng)目如何打包扔向服務(wù)器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue組件之全局注冊(cè)和局部注冊(cè)方式

    vue組件之全局注冊(cè)和局部注冊(cè)方式

    這篇文章主要介紹了vue組件之全局注冊(cè)和局部注冊(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue實(shí)現(xiàn)輸入框@功能的示例代碼

    Vue實(shí)現(xiàn)輸入框@功能的示例代碼

    這篇文章主要為大家介紹了如何利用Vue實(shí)現(xiàn)輸入框@功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定的幫助,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 詳解vue為什么要求組件模板只能有一個(gè)根元素

    詳解vue為什么要求組件模板只能有一個(gè)根元素

    這篇文章主要介紹了vue為什么要求組件模板只能有一個(gè)根元素,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-07-07
  • vue實(shí)現(xiàn)組件切換效果的三種功能

    vue實(shí)現(xiàn)組件切換效果的三種功能

    這篇文章主要為大家介紹了在Vue中實(shí)現(xiàn)組件切換的三種方法,即使用條件渲染,使用動(dòng)態(tài)組件以及通過點(diǎn)擊按鈕切換組件,有需要的小伙伴可以了解下
    2024-11-11
  • 詳解Webstorm 新建.vue文件支持高亮vue語法和es6語法

    詳解Webstorm 新建.vue文件支持高亮vue語法和es6語法

    這篇文章主要介紹了Webstorm 添加新建.vue文件功能并支持高亮vue語法和es6語法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Vue中的ESLint配置方式

    Vue中的ESLint配置方式

    這篇文章主要介紹了Vue中的ESLint配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的操作方法

    vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息的操作方法

    ?MQTT是一種基于發(fā)布/訂閱模式的輕量級(jí)消息協(xié)議,適用于硬件性能有限的遠(yuǎn)程設(shè)備和網(wǎng)絡(luò)狀況不佳的環(huán)境,這篇文章主要介紹了vue 通過 mqtt 實(shí)現(xiàn)實(shí)時(shí)接收消息,需要的朋友可以參考下
    2024-12-12
  • Vue3判斷對(duì)象是否為空的實(shí)現(xiàn)方式

    Vue3判斷對(duì)象是否為空的實(shí)現(xiàn)方式

    這篇文章主要介紹了Vue3判斷對(duì)象是否為空的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • Vue3中ref和reactive的區(qū)別及說明

    Vue3中ref和reactive的區(qū)別及說明

    在Vue3中,ref主要用于基本數(shù)據(jù)類型和單個(gè)數(shù)據(jù)管理,需要用.value訪問,reactive適用于對(duì)象和多數(shù)據(jù)管理,直接訪問屬性,ref支持解構(gòu)保持響應(yīng)性,reactive解構(gòu)后失去響應(yīng)性,選擇合適的方法可以使代碼更優(yōu)化
    2024-11-11

最新評(píng)論

上高县| 萝北县| 大田县| 广水市| 祁门县| 方山县| 临猗县| 拜泉县| 章丘市| 桦甸市| 沙洋县| 黑龙江省| 合阳县| 和龙市| 沭阳县| 怀集县| 新田县| 娄底市| 疏勒县| 山阳县| 襄城县| 衡东县| 澄江县| 瓮安县| 馆陶县| 门源| 大姚县| 桂东县| 民权县| 郯城县| 凉城县| 临安市| 南召县| 合作市| 锡林郭勒盟| 德钦县| 沾化县| 华坪县| 五莲县| 姚安县| 应用必备|