在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ Vue-cli watch監(jiān)聽$route失效

Vue-cli watch監(jiān)聽$route失效

在vue-cli的子組件里 使用watch方法監(jiān)聽路由變化,代碼如下:

watch: {
        $route(to) {
            console.log(to)
            if (to.path.indexOf('index') != -1) {
                //路由變化后重新獲取帖子列表
                this.$http.get('/api/communityList').then((res) => {
                    if (res.data.errCode === 0) {
                        let getRes = res.data.data.hotList
                        this.postList = getRes
                    }
                })
            }
        }
    }

然后在頁面上查看的時(shí)候,不管路由怎么變化,就是沒有東西輸出,而我另外一個(gè)項(xiàng)目里,也是這么寫的監(jiān)聽,卻能夠輸出路由信息的,這是因?yàn)槭裁?

回答
編輯回答
汐顏

`

methods: {
    change(){
        this.$route.params.data1 = 1;
        // 下面這種手動(dòng)set的方式也不能觸發(fā)watch對(duì)$route的監(jiān)聽
        // this.$set(this.$route.params, data1, 1);
    }
},
watch: {
    $route: {
      handler(newName, oldName) {
        console.log('$route has changed');
      },
      deep: true
}  

`
當(dāng)觸發(fā)change事件時(shí),在vue-tool中可以觀測到data中的$route中的params數(shù)據(jù)確實(shí)是變化的,但是仍然watch不到$route的變化。請問這個(gè)什么個(gè)情況?(而且console出來看,$route確實(shí)沒有__ob__屬性,即使手動(dòng)調(diào)用this.$set()這種方式也不行。。。)

2017年8月19日 08:03
編輯回答
菊外人

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

復(fù)用組件時(shí),想對(duì)路由參數(shù)的變化作出響應(yīng)的話,你可以簡單地 watch (監(jiān)測變化) $route 對(duì)象:
我也弄了很久沒出來,我沒理解錯(cuò)的話因?yàn)锳PP.vue里用了子路由所以可以監(jiān)控到變化,在單個(gè)組件里你們和我一樣那個(gè)頁面沒有使用子路由,所以在那個(gè)頁面$route監(jiān)控不會(huì)生效,不對(duì)的話歡迎糾正

2017年7月7日 10:41
編輯回答
瘋浪

在route中設(shè)置children動(dòng)態(tài)路由

2017年1月3日 16:40
編輯回答
陌上花

應(yīng)該this問題,路由變化的時(shí)候新的組件還沒有被創(chuàng)建。
next(vm => {

// 通過 `vm` 訪問組件實(shí)例

})

2018年2月19日 07:11
編輯回答
款爺

樓主搞定了嗎,我也有這樣的問題

2018年7月13日 12:55
編輯回答
帥到炸

樓主解決了嗎,希望解決了一起分享下

2017年3月18日 10:44
編輯回答
避風(fēng)港

樓主這個(gè)問題解決了么

2018年2月19日 21:23
編輯回答
巷尾

試試看 deep:true

2017年6月2日 11:37
編輯回答
憶往昔

這個(gè)問題我也遇到了,經(jīng)過一番嘗試,終于解決了。
我把這段代碼放在了app.vue這個(gè)父組件里面,監(jiān)聽就可以成功了。
我也不知道是不是只能在父組件里面監(jiān)聽,在子組件里面監(jiān)聽不了,大家有知道的可以說一下,謝謝了

2017年10月1日 21:44
編輯回答
乖乖瀦
// $route 需要用單引號(hào)'引起來
watch: {
  '$route' (to, from) {
    console.log(to)
  }
}
2017年1月31日 09:01