鍍金池/ 問答/HTML/ vue router中 所傳的query參數(shù)的改變不會讓頁面刷新嗎?只有強(qiáng)制刷新

vue router中 所傳的query參數(shù)的改變不會讓頁面刷新嗎?只有強(qiáng)制刷新頁面才會更新視圖,是為什么?

順帶問個比較low的問題,項(xiàng)目的頭部導(dǎo)航中,有用戶信息,如何才能在切換導(dǎo)航時依然緩存它的數(shù)據(jù),我這邊每次都會重新去拿一次數(shù)據(jù)

回答
編輯回答
念初
  1. 不會的(因?yàn)関ue的query也是放在hash后面的,hash改變不會引起瀏覽器刷新)。
  2. 可以集成vuex,全局有個state存用戶信息,登錄的時候拿一下寫入state,其他地方可以直接拿來用
2017年7月13日 06:48
編輯回答
笨小蛋

query改變并不會讓頁面刷新,但你可以通過監(jiān)聽來判斷路由是否改變,也可以使用組件內(nèi)守衛(wèi)beforeRouteUpdate ,具體使用方法看文檔、百度或Google;
緩存數(shù)據(jù)可以用vuex,瀏覽器緩存也可以啊

2017年11月1日 09:18
編輯回答
巷尾

思想即:點(diǎn)擊導(dǎo)航時記錄點(diǎn)選的 tab 并追加至 url 上,監(jiān)聽 $route 變化重新 loadData,回退時根據(jù) url 的 tab 參數(shù) loadData 并設(shè)置導(dǎo)航點(diǎn)選狀態(tài)。

export default {

    data () {
        return {
            tab: 0
        }
    },
    
    created () {
        this.onRoute()
    },
    
    watch: {
        '$route': 'onRoute'
    },
    
    onRoute () {
        this.loadData()
    },
    
    pushRouter () {
        // 考慮不丟棄通用參數(shù)
        var query = this.$route.query
        var queryString = ''
        for (let key in query) {
            if (key !== 'tab') queryString += `&${key}=${query[key]}`
        }
        this.$router.replace(`/路由 url?${queryString}&tab=${this.tab}`)
    },
    
    /**
    * 加載數(shù)據(jù)請求
    */
    loadData () {
        this.$request({
            url: '請求 url',
            params: {
                tab: this.tab
            }
        }).then((data) => {
            console.log(data)
        })
    },
    
    /**
    * 點(diǎn)擊導(dǎo)航
    */
    clickNavigation (tab) {
        this.tab = tab
        this.pushRouter()
    }
}
2017年10月8日 03:43