Vue3快速上手(十六)Vue3路由傳參大全

在這里插入圖片描述
Vue3路由傳參

一、傳參的多種方式

1.1 拼接方式

這種方式適合傳遞單個參數的情況,比如點擊查看詳情,傳個id這樣的場景

傳參:

<RouterLink to="/person?id=1" active-class="active">person</RouterLink>
<!-- 一般是這樣寫,動態傳參 -->
<RouterLink :to="`/person?id=${obj.id}`" active-class="active">person</RouterLink>

接參:

import { useRoute } from 'vue-router';// 接收路由傳參
let route = useRoute()
console.log('useRoute()-->', route);
console.log('接參:id = ', route.query.id);

在這里插入圖片描述

1.2 對象方式

對象方式,適合一起傳遞多個參數,比較清晰明了,使用拼接方式雖然也能實現,但雜亂無章,不易維護,且容易出錯。
傳參:

<RouterLink :to="{path: '/person',query: {id: 1,name: '王大拿',age: 56}}" active-class="active">person
</RouterLink>

接參:

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由傳參
let route = useRoute()
let {query} = toRefs(route)
console.log('接參:id = ', query.value.id);
console.log('接參:name = ', query.value.name);
console.log('接參:age = ', query.value.age);

在這里插入圖片描述

1.3 params參數方式

params方式,需要在路由上設置需要傳遞參數的占位,如下:我在person后占位3個參數,且age為不必填項。id和name為必填項

// 創建1個路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多個路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue}]
});

也有2種方式,拼接路徑方式、傳遞對象方式:

1.3.1 params拼接路徑方式

傳參:這里不傳遞age,因為上面設置age不是必傳項

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接參:這里接params參數

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由傳參
let route = useRoute()
console.log('route->', route);let {params} = toRefs(route)
console.log('接參:id = ', params.value.id);
console.log('接參:name = ', params.value.name);
console.log('接參:age = ', params.value.age);

在這里插入圖片描述

1.3.2 params傳遞對象方式

** ☆這里和1.2里不一致的是**:用的是name和params傳遞。1.2里用個是:path和query傳遞。
傳參:

<RouterLink :to="{name: 'ren',params: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接參:這里接params參數

import { toRefs } from 'vue'
import { useRoute } from 'vue-router';// 接收路由傳參
let route = useRoute()
console.log('route->', route);let {params} = toRefs(route)
console.log('接參:id = ', params.value.id);
console.log('接參:name = ', params.value.name);
console.log('接參:age = ', params.value.age);

在這里插入圖片描述

1.4 props方式

1.4.1 props方式1

基于1.3params方式傳遞參數,開啟props為true。那么就可以通過defineProps(['id', 'name', 'age'])直接接收參數,并在頁面上展示。

// 創建1個路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多個路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue,props: true}]
});

傳參:

<RouterLink to="/person/1/王小拿" active-class="active">person</RouterLink>

接參:這里通過defineProps()接參數

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年齡:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

在這里插入圖片描述

1.4.2 props方式2

通過props(route){}函數的方式,傳遞參數。這種方式既支持params對象方式,也支持query對象的方式。

(一)params對象方式:
需要占位,返回route.params

// 創建1個路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多個路由配置 */routes: [{name: 'ren',path: '/person/:id/:name/:age?',component: PersonVue,props(route){return route.params}}]
});

傳參:

<RouterLink :to="{name: 'ren',params: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接參:這里通過defineProps()接參數

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年齡:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

(二)query對象方式:
去掉占位,返回route.query

// 創建1個路由器
const router = createRouter({// 路由器的工作模式history: createWebHistory(),/* 多個路由配置 */routes: [{name: 'ren',path: '/person',component: PersonVue,props(route){return route.query}}]
});

傳參:

<RouterLink :to="{path: '/person',query: {id: 1,name: '王大拿',age: 56}
}" active-class="active">person
</RouterLink>

接參:這里通過defineProps()接參數

<template><div class="person"><h3>ID{{ id }}</h3><h3>姓名:{{ name }}</h3><h3>年齡:{{ age }}</h3></div>
</template><script lang='ts' setup name="PersonCom">
defineProps(['id', 'name', 'age'])
</script>

效果都是一樣的,瀏覽器地址不同:params是路徑方式;query是參數拼接方式。
在這里插入圖片描述

END

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716233.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716233.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity - 相機畫面為黑白效果

一、 在Hierarchy中創建一個Global Volume,并設置它為局部作用 二、 將場景出現的作用域范圍縮小至相機所在位置&#xff0c;將相機包含即可。 三、添加覆蓋組件Color Adjustments,并將Saturation直接拉為-100 。 此時&#xff0c;相機拍攝畫面為黑白&#xff0c;場景視圖中…

1、Linux-安裝

一、Linux和Windows的一些區別 1、Linux嚴格區分大小寫——【Windows創建文件夾時不區分大小寫】 2、Linux中所有內容都以文件形式存儲&#xff0c;包括硬件 3、Linux不靠拓展名區分文件類型&#xff0c;而是可以通過讀取文件開頭的一些字節來區分。 但是在實際使用中一般要…

MYSQL---日志

1.日志的概述 日志是MySQL數據庫的重要組成部分。日志文件中記錄著MySQL數據庫運行期間發生的變化&#xff1b;也就是說用來記錄MySQL數據庫的客戶端連接狀況、SQL語句的執行情況和錯誤信息等。當數據庫遭到意外的損壞時&#xff0c;可以通過日志查看文件出錯的原因&#xff0…

Leetcode算法題

用隊列實現棧 用隊列實現棧的四個操作&#xff1a; push(x)——元素x入棧pop()——移出棧頂元素top()——獲取棧頂元素empty()——返回棧是否為空 注意&#xff1a; 只能使用隊列的基本操作&#xff0c;即只可以調用隊列的push to back&#xff0c;pop from front&#xff…

C語言中的字符魔法:大小寫轉換的藝術

引言 在C語言的世界里&#xff0c;字符處理是一項基礎且重要的任務。字符作為編程中最基本的元素之一&#xff0c;承擔著信息展示、數據交互等多重角色。特別是在處理文本信息時&#xff0c;字符的轉換和識別顯得尤為重要。大小寫字母的轉換就是其中一個常見的需求&#xff0c…

電子電氣架構——汽車DoIP診斷通信建立流程

電子電氣架構——汽車DoIP診斷通信建立流程 我是穿拖鞋的漢子,魔都中堅持長期主義的工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 人們會在生活中不斷攻擊你。他們的主要武器是向你灌輸對自己的懷疑:你的價值、你的能力、你的潛力。他們往往會…

4款塞紙條盲盒交友源碼,可以對接公眾號

一元盲盒交友源碼/脫單盲盒源碼/交友盲盒/戀愛盲盒公眾號版 可以對接自己支付&#xff0c;全部自定義 沒有任何bug版本&#xff0c;已經測試完全可以 免費源碼&#xff0c;不包搭建指導 源碼下載地址專業知識分享社區-專業知識筆記免費分享 (chaobiji.cn)

華為OD機試 - 螺旋數字矩陣

1 題目描述 疫情期間&#xff0c;小明隔離在家&#xff0c;百無聊賴&#xff0c;在紙上寫數字玩。他發明了一種寫法&#xff1a; 給出數字個數 n &#xff08;0 < n ≤ 999&#xff09;和行數 m&#xff08;0 < m ≤ 999&#xff09;&#xff0c;從左上角的 1 開始&…

Globeland30米分辨率土地利用數據的下載

全國地理信息資源目錄服務系統 先注冊一下&#xff0c;登錄 點擊查詢

Yolo不改包代碼關閉控制臺推理日志

在預測的參數列表里加上verboseFalse結即可關閉控制臺輸出日志 model.predict(sourcecolor_image,showTrue,verboseFalse)

國內chatgpt寫作軟件,chatgpt國內使用

隨著人工智能技術的不斷發展&#xff0c;國內涌現出了一些基于ChatGPT模型的寫作軟件&#xff0c;這些軟件不僅能夠實現智能化的文章寫作&#xff0c;還支持批量生成各種類型的文章。本文將深入探討國內ChatGPT寫作軟件&#xff0c;以及它們在批量文章創作方面的應用與優勢。 C…

使用最新Hal庫實現USART中斷收發功能(STM32F4xx)

目錄 概述 1 認識STM32F4XX的USART 1.1 USART 功能說明 1.2 USART的中斷 1.3 USART 模式配置 1.4 USART的寄存器 2 使用STM32CubeMX 生成工程 2.1 配置參數 2.2 生成工程代碼 3 實現軟件功能 3.1 軟件功能介紹 3.2 認識USART Hal庫 3.2.1 初始化函數組 3.2.2 發送…

一周學會Django5 Python Web開發-Django5詳細視圖DetailView

鋒哥原創的Python Web開發 Django5視頻教程&#xff1a; 2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili2024版 Django5 Python web開發 視頻教程(無廢話版) 玩命更新中~共計28條視頻&#xff0c;包括&#xff1a;2024版 Django5 Python we…

vue+element模仿實現云碼自動驗證碼識別平臺官網

一、項目介紹 項目使用傳統vue項目結構實現&#xff0c;前端采用element實現。 element官網&#xff1a;Element - The worlds most popular Vue UI framework 云碼官網地址&#xff1a;云碼-自動驗證碼識別平臺_驗證碼識別API接口_免費驗證碼軟件 項目截圖&#xff0c;支持…

ios csr 證書創建

蘋果Certificate證書創建 1.開始創建。 登錄蘋果開發者網站 選擇Certificates旁邊的 ?按鈕 選擇你想要的證書類型&#xff0c;手機開發的話一般是iOS APP Development 跟 iOS Distribution&#xff08;App Store and Ad Hoc&#xff09;&#xff0c;如果要Mac和iOS都可以發…

NCT 全國青少年編程圖形化編程(Scratch)等級考試(一級)模擬測試H

202312 青少年軟件編程等級考試Scratch一級真題 第 1 題 【 單選題 】 以下說法合理的是( ) A :隨意點開不明來源的郵件 B :把密碼設置成 abc123 C :在虛擬社區上可以辱罵他人 D :在改編他人的作品前&#xff0c; 先征得他人同意 正確答案&#xff1a; D 試題解析&…

C# aes加密解密byte數組

using System.Security.Cryptography; using System.Text;namespace AESStu01;public class AesHelper {// AES加密密鑰和向量&#xff08;需要保密&#xff09; private static readonly string Key "";//16長度字符串數字混合private static readonly string IV …

LeetCode--42

42. 接雨水 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖&#xff0c;計算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 輸入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出&#xff1a;6 解釋&#xff1a;上面是由數組 [0,1,0,2,1,0,1,…

PackagingTool_x64_v2.0.1.0圖片轉檔打包二進制文件合并字庫生成圖片軟件介紹

繼去年12月份發布的打包軟件PackagingTool v1.4.0.2之后&#xff0c;今年再度投入精力&#xff0c;完善了軟件功能&#xff0c;同時開發了幾個更加實用的工具&#xff0c;可助力UI界面的設計開發。當前最新版本為PackagingTool_x64_v2.0.1.0&#xff0c;該版本主界面如下&#…

Windows操作系統中各種功能、快捷鍵

目錄 引言一、系統1.任務管理器&#xff08;當前進程屬性&#xff09;2.畫圖板3.計算器4.CMD命令行窗口5.控制面板6.記事本7.寫字板 二、瀏覽器1.打開開發者工具2.頁面搜索 三、AcWing1.替換2.對多處進行相同操作3.光標變為下劃線 引言 由于本專業是計算機專業&#xff0c;所以…