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

Vue3之路由跳轉(zhuǎn)與參數(shù)獲取方式

 更新時(shí)間:2023年05月18日 16:14:30   作者:葉子_o  
這篇文章主要介紹了Vue3之路由跳轉(zhuǎn)與參數(shù)獲取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Vue3路由跳轉(zhuǎn)與參數(shù)獲取

路由跳轉(zhuǎn)

import { useRouter } from "vue-router"
export default {
? setup () {
? ? const router = useRouter(); // 第一步
? ? const state = reactive({
? ? ? list: [],
? ? ? toDeatil(id) {
? ? ? ? router.push('/product?id=' + id); // 第二步
? ? ? },
? ? })
? ? return {
? ? ? ...toRefs(state)
? ? }
? }
}

參數(shù)獲取

import { useRoute } from "vue-router"
export default {
? setup () {
? ? const route = useRoute(); // 第一步
? ? console.log(route.query.type); // 第二步
? ? const state = reactive({
? ? ? list: [],
? ? })
? ? return {
? ? ? ...toRefs(state)
? ? }
? }
}

Vue2和Vue3的路由跳轉(zhuǎn)及路由傳參

首先,路由跳轉(zhuǎn)的方法有兩種:

聲明式導(dǎo)航: router-link (務(wù)必要有to屬性),可以實(shí)現(xiàn)路由跳轉(zhuǎn)

編程式導(dǎo)航: 利用的是組件實(shí)例的$router.push|replace方法,可以實(shí)現(xiàn)路由的跳轉(zhuǎn) (可以書寫一些自己的業(yè)務(wù))

示例:

點(diǎn)擊logo按鈕,跳轉(zhuǎn)到home頁 (聲明式)

                <router-link class="logo" to="/home">
                    <img src="./images/logo.png" alt="">
                </router-link>

點(diǎn)擊搜索按鈕,執(zhí)行跳轉(zhuǎn)( goSearch )  (編程式)

<button class="btn" type="button" @click="goSearch">搜索</button>

這里的話,Vue2和Vue3寫法有點(diǎn)不一樣

Vue2中就是methods里面定義goSearch()

methods: {
    goSearch(){
        this.$router.push('/search');
    }
}

Vue3可以使用setup語法糖

<script>
import { useRouter } from 'vue-router'
export default {
    name: 'HeaderIndex',
    setup(){
        const $router = useRouter()
        // method
        function goSearch(){
            $router.push('/search');
        }
        return {
            goSearch
        }
    }
}
</script>

接著再寫一下路由傳參,那參數(shù)一共有2種:

  • params參數(shù): 屬于路徑當(dāng)中的一部分,需要注意,在配置路由的時(shí)候,需要占位
  • query參數(shù): 不屬于路徑當(dāng)中的一部分,類似于ajax中的queryString /home?k=v$kv=,不需要占位

比如,在搜索框中輸入一些內(nèi)容,點(diǎn)擊搜索按鈕,完成路由傳參跳轉(zhuǎn)

接下來都是以Vue3中為例,最后再寫上vue2中的相應(yīng)代碼

第一種:字符串

給搜索框進(jìn)行雙向綁定keyword

<form action="###" class="searchForm">
    <input type="text" v-model="keyword"/>
    <button class="btn" type="button" @click="goSearch">搜索</button>
</form>

首先,如果要使用params參數(shù)的話,需要配置路由時(shí)進(jìn)行占位

const routes = [
    {
        path:'/search/:keyword',
        component: SearchIndex,
    }

然后使用字符串形式傳遞參數(shù)

<script>
import { useRouter } from 'vue-router'
import {ref} from 'vue'
export default {
    name: 'HeaderIndex',
    setup(){
        const $router = useRouter()
        let keyword = ref('')
        // method
        function goSearch(){
            // 路由傳參
            // 第一種:字符串形式
            $router.push('/search/' + keyword.value + "?k=" + keyword.value.toUpperCase());
        }
        return {
            goSearch,
            keyword
        }
    }
}
</script>

 因?yàn)槲覀兪褂昧藃ef,所以接收參數(shù)的時(shí)候要 .value來獲取,不然是讀不到的。

  • /asd 就是 params參數(shù)
  • ASD 就是 query參數(shù)
  • 我們可以通過輸出來驗(yàn)證 

我在SearchIndex.vue中通過模版字符串將它顯示

<template>
  <div>
    我是搜索
    <h1>params參數(shù)---{{$route.params.keyword}}</h1>
    <h1>query參數(shù)---{{$route.query.k}}</h1>
  </div>
</template>

 

第二種:模版字符串 

這種寫法比第一種字符串形式會(huì)簡單一些,要替換的就是下面這串,其余不變。就是用模版字符串來代替字符串拼接而已

// 第二種:模版字符串
$router.push(`/search/${keyword.value}?k=${keyword.value.toUpperCase()}`)

第三種:對(duì)象寫法

這種寫法是最常用的,也是最直觀的

但如果使用對(duì)象寫法,并且還是用的params參數(shù),就不能用path形式了,而是要用name形式

router/index.js中對(duì)search的路由添加name。不再使用path 

{
        path:'/search/:keyword',
        component: SearchIndex,
        meta:{show:true},
        name:"search"
    }
function goSearch(){
            console.log(keyword.value);
            // 路由傳參
            // 第一種:字符串形式
            // $router.push('/search/' + keyword.value + "?k=" + keyword.value.toUpperCase());
            // 第二種:模版字符串
            // $router.push(`/search/${keyword.value}?k=${keyword.value.toUpperCase()}`)
            // 第三種:對(duì)象寫法
            $router.push({
                name:"search",
                params:{keyword:keyword.value},
                query:{k:keyword.value.toUpperCase()}
            })
        }

而Vue2中的寫法其實(shí)大同小異,就是沒有setup和ref。

function goSearch(){
            // 路由傳參
            // 第一種:字符串形式
            // this.$router.push('/search/' + this.keyword + "?k=" + this.keyword.toUpperCase());
            // 第二種:模版字符串
            // this.$router.push(`/search/${this.keyword}?k=${this.keyword.toUpperCase()}`)
            // 第三種:對(duì)象寫法
            this.$router.push({
                name:"search",
                params:{keyword:this.keyword},
                query:{k:this.keyword.toUpperCase()}
            })
        }

就是訪問keyword時(shí)需要this訪問,并且由于沒有ref以后也不需要加上value了

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 基于vue+canvas的excel-like組件實(shí)例詳解

    基于vue+canvas的excel-like組件實(shí)例詳解

    a vue component,基于vue的表格組件,主要解決大數(shù)據(jù)量的表格渲染性能問題,使用canvas繪制表格,同時(shí)支持類似excel的批量選中,復(fù)制黏貼刪除,實(shí)時(shí)編輯等功能.這篇文章主要介紹了基于vue+canvas的excel-like組件,需要的朋友可以參考下
    2017-11-11
  • vue+element-ui表格封裝tag標(biāo)簽使用插槽

    vue+element-ui表格封裝tag標(biāo)簽使用插槽

    這篇文章主要介紹了vue+element-ui表格封裝tag標(biāo)簽使用插槽,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue3+uniapp 上傳附件的操作代碼

    vue3+uniapp 上傳附件的操作代碼

    uni-file-picker搭配uni.uploadFile在使用問題上踩了不少坑,我至今還是沒辦法在不改uniapp源碼基礎(chǔ)上實(shí)現(xiàn)限制重復(fù)文件的上傳,這篇文章介紹vue3+uniapp 上傳附件的操作代碼,感興趣的朋友一起看看吧
    2024-01-01
  • 使用Pinia Persistedstate插件實(shí)現(xiàn)狀態(tài)持久化的操作方法

    使用Pinia Persistedstate插件實(shí)現(xiàn)狀態(tài)持久化的操作方法

    Pinia 作為 Vue 的新一代狀態(tài)管理工具,以其輕量化和易用性受到開發(fā)者的喜愛,然而,Pinia 默認(rèn)使用內(nèi)存存儲(chǔ)狀態(tài),為了解決這個(gè)問題,我們可以借助 Pinia Persistedstate 插件來實(shí)現(xiàn)狀態(tài)的持久化存儲(chǔ),本文將詳細(xì)介紹該插件的使用方法,需要的朋友可以參考下
    2024-11-11
  • vue3使用defineModel實(shí)現(xiàn)父子組件雙向綁定

    vue3使用defineModel實(shí)現(xiàn)父子組件雙向綁定

    這篇文章主要個(gè)給大家介紹了在vue3中使用defineModel進(jìn)行父子組件中的雙向綁定,文中通過代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • vue如何實(shí)現(xiàn)路由跳轉(zhuǎn)到外部鏈接界面

    vue如何實(shí)現(xiàn)路由跳轉(zhuǎn)到外部鏈接界面

    這篇文章主要介紹了vue如何實(shí)現(xiàn)路由跳轉(zhuǎn)到外部鏈接界面,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-10-10
  • 解決vue無法設(shè)置滾動(dòng)位置的問題

    解決vue無法設(shè)置滾動(dòng)位置的問題

    這篇文章主要介紹了解決vue無法設(shè)置滾動(dòng)位置的問題 ,需要的朋友可以參考下
    2018-10-10
  • vuex5中的Pinia插件機(jī)制

    vuex5中的Pinia插件機(jī)制

    這篇文章主要介紹了vuex5中的Pinia插件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue實(shí)現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面

    vue實(shí)現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面

    本文給大家分享了vue實(shí)現(xiàn)登錄后頁面跳轉(zhuǎn)到之前頁面的一個(gè)功能,有這方便需要的朋友學(xué)習(xí)參考下吧。
    2018-01-01
  • vue使用vuex實(shí)現(xiàn)首頁導(dǎo)航切換不同路由的方法

    vue使用vuex實(shí)現(xiàn)首頁導(dǎo)航切換不同路由的方法

    這篇文章主要介紹了vue使用vuex實(shí)現(xiàn)首頁導(dǎo)航切換不同路由的方法 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05

最新評(píng)論

剑川县| 建始县| 新野县| 克拉玛依市| 杂多县| 泗洪县| 东明县| 林周县| 吉木萨尔县| 城步| 南汇区| 张家港市| 塔河县| 海兴县| 临漳县| 芷江| 贞丰县| 涟源市| 宝丰县| 盘锦市| 久治县| 横峰县| 长岭县| 贵南县| 儋州市| 河北区| 那坡县| 苏尼特右旗| 阜康市| 翁源县| 于田县| 淮安市| 陇南市| 锡林郭勒盟| 武胜县| 法库县| 中牟县| 自治县| 静宁县| 莱阳市| 贵定县|