亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue之this.$router.push頁面刷新問題

 更新時間:2023年12月04日 14:46:09   作者:兇呆呆  
這篇文章主要介紹了vue之this.$router.push頁面刷新問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

跳轉當前路由(路由參數有變化)(路由參數無變化此方法無效)

使用this.$router.push進行跳轉時,如果是跳轉當前路由(路由參數有變化),可在 App.vue 里的 router-view 標簽設置 key 值。

或使用監(jiān)聽器 watch

<template>
    <div id="app">
        <DataSearch/>
        <keep-alive :exclude="exclude">
            <!--  通過key設置頁面刷新 規(guī)矩
                $route.fullPath 得到路由(包含帶?的參數)
            :key="$route.fullPath" 如果路由改變就刷新
                     -->
<!--            <router-view :key="$route.fullPath"></router-view>-->
            <router-view :key="$route.fullPath"></router-view>
        </keep-alive>
    </div>
</template>

跳轉當前路由(路由參數也無變化)

可以創(chuàng)建一個中轉 vue 界面,詳見代碼:

首先 我們來看主要功能代碼:

假設我現在想實現:在 datasearch.vue 中設置一個搜索按鈕,點擊搜索就跳轉至 datadisplay.vue 頁面,并且 datadisplay.vue 頁面會重新刷新渲染(不管路由是否變化)

datasearch.vue

<template>
    <div style="text-align: center;">
        <el-autocomplete
            class="input-with-select"
            style="width: 80%;"
            popper-class="my-autocomplete"
            v-model="state"
            :fetch-suggestions="querySearch"
            placeholder="請輸入內容"
            value-key="value"
            @change="sousuo"
        >
<!--    使用 value-key 屬性,可以指定任意列作為顯示用的        -->

<!--     自定義模板       -->
<!--   比如多個顯示      -->
<!--            <template slot-scope="{ item }">-->
<!--                <div class="name">{{ item.value }}</div>-->
<!--                <span class="addr">{{ item.address }}</span>-->
<!--            </template>-->
            <el-button slot="append" icon="el-icon-search" @click="sousuo" >搜索</el-button>
        </el-autocomplete>
    </div>
</template>
<script>
    export default {
        name: 'DataSearch',
        data() {
            return {
                state: '',
                content: [],
                fullPath: '',
            };
        },

        methods: {
            querySearch(queryString, cb) {
                var restaurants = this.loadAll();
                var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
                // 調用 callback 返回建議列表的數據
                cb(results);
            },
            createFilter(queryString) {
                return (restaurant) => {
                    // restaurant.value.toLowerCase().indexOf(queryString.toLowerCase())如果元素存在列表中返回下標,否則返回-1
                    console.log(restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()));
                    return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) > -1);  // 如果大于-1則代表有這個關鍵字
                };
            },

            loadAll() {
                // console.log(this.content);
                return this.content
            },
            sousuo(){
                this.$router.push({
                    path: '/zhongzhuan',
                    query: {state: this.state},

                });
            },
        }
    }
</script>

App.vue

<template>
    <div id="app">
        <DataSearch/>
<!--       這里必須要通過 :exclude 設置 緩存黑名單 否則跳轉會出問題       -->
<!--      黑名單中要包含 中轉的 vue 名  和中轉后的 vue 名     -->
        <keep-alive :exclude="exclude">
            <!--  通過key設置頁面刷新 規(guī)矩
                $route.fullPath 得到路由(包含帶?的參數)
            :key="$route.fullPath" 如果路由改變就刷新
                     -->
<!--            <router-view :key="$route.fullPath"></router-view>-->
<!--            <router-view :key="$route.fullPath"></router-view>-->
<!--              這里設置或不設置 key 都可以                               -->
            <router-view></router-view>
        </keep-alive>
    </div>
</template>

<script>
    import DataSearch from './components/datasearch.vue'

    export default {
        name: 'App',
        components: {
            DataSearch
        },
        data() {
            return {
                exclude: ['datadisplay', 'zhongzhuan'],
            }
        },
    }
</script>

zhongzhuan.vue

<template>
    <div></div>
</template>

<script>
    export default {
        // 用來中轉,避免路由不變時 頁面不刷新
        name: "zhongzhuan",

        created() {
            this.pushUrl()
        },
        methods: {
            getData(){
                return this.$route.query.state
            },
            pushUrl(){
                this.$router.push({
                    path: '/datadisplay',
                    query: {state: this.getData()},  // 傳遞參數,放在url?后面的
                })
            }
        },
    }
</script>

datadisplay.vue

<template>
    <div>
        <p>content:{{ content }}</p>
    </div>
</template>

<script>
    export default {
        name: "datadisplay",
        data(){
            return {
                content: '123',
            }
        },

        created() {
            this.getData()
        },
        methods: {
            getData(){
                //this.$router 實際上就是全局路由對象任何頁面都可以調用 push(), go()等方法;
                // this.$route  表示當前正在用于跳轉的路由器對象,可以調用其name、path、query、params等屬性。
                // 應此需要接受路由參數時,要用this.$route,發(fā)送跳轉路由時要用this.$router
                console.log(this.$route);
                this.content = this.$route.query;
            }
        }
    }

</script>

<style scoped>

</style>

對應代碼實現圖片

  • 第一次點擊

  • 第二次點擊

  • 第三次點擊

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Vue使用三方工具vueUse實現虛擬列表

    Vue使用三方工具vueUse實現虛擬列表

    其實采用vueUse中的useVirtualList方法同樣可以實現虛擬列表,這篇文章小編就來和大家詳細介紹一下如何使用vueUse實現簡單的虛擬列表效果吧
    2024-04-04
  • vue+element+Java實現批量刪除功能

    vue+element+Java實現批量刪除功能

    這篇文章主要介紹了vue+element+Java實現批量刪除功能,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04
  • 從Vue到Postman全面驗證API接口跨域問題解決

    從Vue到Postman全面驗證API接口跨域問題解決

    我們都知道跨域是同源策略導致的,域名不同、協議不同、端口號不同任意一種情況都會導致跨域,這篇文章主要介紹了從Vue到Postman全面驗證API接口跨域問題,需要的朋友可以參考下
    2024-08-08
  • Vue2仿淘寶實現省市區(qū)三級聯動

    Vue2仿淘寶實現省市區(qū)三級聯動

    這篇文章主要為大家詳細介紹了Vue2仿淘寶實現省市區(qū)三級聯動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue實現當訪問的路由不存在時跳轉到404頁面的方法詳解

    Vue實現當訪問的路由不存在時跳轉到404頁面的方法詳解

    在 Vue3 中,可以使用 Vue Router 實現跳轉到 404 頁面,即當用戶訪問一個不存在路由時,系統(tǒng)會默認跳轉到 404 頁面,本文給大家介紹了一個簡單的實現方法,需要的朋友可以參考下
    2023-12-12
  • 在vue中實現清除echarts上次保留的數據(親測有效)

    在vue中實現清除echarts上次保留的數據(親測有效)

    這篇文章主要介紹了在vue中實現清除echarts上次保留的數據(親測有效),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Vue3中props傳參方式詳解

    Vue3中props傳參方式詳解

    這篇文章主要為大家詳細介紹了Vue3中props傳參方式(多種數據類型傳參方式)的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-11-11
  • 使用Vue綁定class和style樣式的幾種寫法總結

    使用Vue綁定class和style樣式的幾種寫法總結

    這篇文章主要介紹了使用Vue綁定class和style樣式的幾種寫法,文章通過代碼示例介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-07-07
  • Vue3引入SVG圖標的流程步驟

    Vue3引入SVG圖標的流程步驟

    我們在開發(fā) Vue 項目的時候會使用一些前端組件庫,例如 Element、Ant Design 等,這些組件庫雖然方便,但是也有一些缺點,比如內置的圖標太少,例如我們開發(fā)醫(yī)療、財務、工程等一些前端項目,內置的圖標不能滿足我們的需求,所以我們常常在Vue項目中引入SVG圖標
    2024-09-09
  • Vue多種方法實現表頭和首列固定的示例代碼

    Vue多種方法實現表頭和首列固定的示例代碼

    本篇文章主要介紹了Vue多種方法實現表頭和首列固定的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論