Vue3 使用 Vue Router 時,prams 傳參失效和報錯問題

Discarded invalid param(s) “id“, “name“, “age“ when navigating

我嘗試使用 prams 傳遞數據

<script setup>
import { useRouter } from 'vue-router'const router = useRouter()
const params = { id: '1', name: 'ly', phone: 13246566476, age: 23 }
const toDetail = () => router.push({ name: 'detail', params })</script><template><el-button type="danger" @click="toDetail">查看情頁</el-button>
</template>

在接收頁面嘗試渲染 prams 傳遞的數據:

<template><div>姓名:{{ route.params?.name }}</div><div>電話:{{ route.params?.phone }}</div><div>年齡:{{ route.params?.age }}</div>
</template><script setup>
import { useRoute } from 'vue-router'
const route = useRoute()
</script>

當我跳轉頁面時,得到的 prams 數據為空 ,控制臺也出現了 Vue Router 的警告

Vue Router 的警告

點開鏈接后發現了原因,?點擊查看更新日志。

S1

S2

也就是說,從Vue Router的2022-8-22 這次更新后,我們使用上面的方式在新頁面無法獲取:

vue也給我們提出了解決方案:

  1. 使用 query 的方式傳參

    只要改成query 傳參就好了,注意query傳參只能用路由表中的 path ,不是 name ,并且所有參數都會顯示在URL 地址上。

    <script setup>
    import { useRouter } from 'vue-router'const router = useRouter()
    const query = { id: '1', name: 'ly', phone: 13246566476, age: 23 }
    const toDetail = () => router.push({  path: '/detail', query })</script>
    <template><el-button type="danger" @click="toDetail">查看情頁</el-button>
    </template>
    
  2. 將參數放在 pinia 或 vuex倉庫里

  3. 使用動態路由匹配

  4. [傳遞 state,在新頁面使用 History API 接收參數](#使用 History API 方式傳遞和接收)

  5. 使用 meta 原信息方式傳遞 (此方式更適用于路由守衛)

使用動態路由匹配

如果傳遞參數較少的情況下,可以嘗試使用下面這種方式,只要修改一下path定義部分就可以了:

// params 傳遞的參數: { id: '1', name: 'ly', phone: 13246566476, age: 23 }{path: '/detail/:id/:name/:phone/:age',name: 'detail',component: () => import('@/views/detail/index.vue')
}

查看頁面效果,控制臺警告也消失了:

image-20230105162347660

注意,如果使用使用了這種動態路由匹配方式,?path: '/detail/:id/:name/:phone/:age'?,中這三個參數你都必須傳遞,否則會報錯:

image-20230105163743993

個人覺得這么寫很雞肋: 如果不把params參數寫在路由路徑中無法得到 params 參數,這種方式的params參數又會顯示在地址欄。雖然不算棄用params, 但是每次把params參數寫在路由路徑中是很麻煩的一件事。

使用 History API 方式傳遞和接收

在跳轉前的頁面使用 state 參數:

<script setup>
import { useRouter } from 'vue-router'const router = useRouter()const params = { id: '1', name: 'ly', phone: 13246566476, age: 23 }
const toDetail = () => router.push({ name: 'detail', state: { params } })</script><template><el-button type="danger" @click="toDetail">查看情頁</el-button>
</template>

跳轉的后頁面接收:

<template><div>{{ historyParams }}</div>
</template><script setup lang="ts">const historyParams = history.state.params
console.log('history.state', history.state)
</script>

image-20230105164119984

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

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

相關文章

快速使用BRTR公式出具的大模型Prompt提示語

Role:文章模仿大師 Background: 你是一位文章模仿大師&#xff0c;擅長分析文章風格并進行模仿創作。老板常讓你學習他人文章后進行模仿創作。 Attention: 請專注在文章模仿任務上&#xff0c;提供高質量的輸出。 Profile: Author: 一博Version: 1.0Language: 中文Descri…

半邊數據結構學習

半邊數據結構學習 一、網格數據結構二、半邊數據結構頂點(Vertex)半邊(HalfEdge)面片(Face) 三、OpenMesh 相關代碼拓撲關聯對象遍歷 四、OpenFilpper 相關代碼HoleInfo類孔洞檢測孔洞信息HoleFiller類孔洞補全 一、網格數據結構 對于表面網絡來說&#xff0c;其關鍵在于拓撲&…

【MySQL系列】VARCHAR的底層存儲

&#x1f49d;&#x1f49d;&#x1f49d;歡迎來到我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

python-親和數(賽氪OJ)

[題目描述] 古希臘數學家畢達哥拉斯在自然數研究中發現&#xff0c;220 的所有真約數(即不是自身的約數)之和為&#xff1a; 1245101120224455110&#xff1d;284 。 而 284 的所有真約為 1 、 2 、 4 、 71 、 142 &#xff0c;加起來恰好為 220 。人們對這樣的數感到很驚奇&a…

頤養優選元宇宙

頤養優選是一個專注于為中老年人提供高品質養老服務的品牌或平臺。它通常涵蓋了一系列服務和產品&#xff0c;旨在幫助老年人享受健康、舒適、有尊嚴的晚年生活。這些服務可能包括但不限于以下幾個方面&#xff1a; ###健康管理 -**定期體檢**&#xff1a;提供定期的身體健康檢…

如何搞定美國TikTok直播網絡?

在全球范圍內&#xff0c;TikTok已經積累了超過30億次的下載量&#xff0c;月活躍用戶達到13億以上&#xff0c;支持75種語言&#xff0c;覆蓋了150多個國家和地區。這一龐大的流量池吸引了眾多國內電商人嘗試在TikTok上進行業務拓展。本文將探討如果要在美國運營TikTok直播&am…

ruoyi定時任務使用

使用沒有什么特別的&#xff0c;不再贅述&#xff0c;可參見前端文檔 或下面的文章 ruoyi若依定時任務的基本使用_若依框架定時任務怎么用-CSDN博客 只說一下被調度任務的建立 1、在調用的類上添加Component("后期在調用任務創建用的偽類的名稱") 稱為偽類是因為…

MySql性能調優03-[SQL優化]

SQL優化 MySQL優化SQL優化-不要寫select *SQL優化-小表驅動大表&#xff0c;而不是大表驅動小表SQL優化-連接查詢代替子查詢SQL優化-提升group by的效率SQL優化-使用limitSQL優化-union all代替unionSQL優化-join的表不宜過多 MySQL優化 trace工具 set session optimizer_trac…

把Docker的虛擬磁盤文件移動到別的盤符

今天清理C盤空間&#xff0c;發現一個很大的文件 ext4.vhdx 足有 15G 之多&#xff0c;發現這個是Docker的虛擬磁盤文件&#xff0c;于是在網上找到移到它的辦法&#xff0c;使用 PowerShell 執行下面命令 查看Docker狀態和版本 wsl -l -v 關閉Docker服務 wsl --shutdown …

Kithara與OpenCV (一)

Kithara使用 OpenCV 庫 目錄 Kithara使用 OpenCV 庫簡介需求和支持的環境構建 OpenCV 庫使用 CMake 進行配置以與 Kithara 一起工作 使用 OpenCV 庫設置項目運行 OpenCV 代碼圖像采集和 OpenCV自動并行化限制和局限性1.系統建議2.實時限制3.不支持的功能和缺失的功能4.顯示 Ope…

Python 數據類型與基礎概念

在 Python 編程中&#xff0c;理解和掌握數據類型和基礎概念是至關重要的。這些概念不僅幫助我們更有效地編寫代碼&#xff0c;還使我們能夠創建更加復雜和功能豐富的應用程序。本文將詳細介紹 Python 中的基本數據類型及其相關操作&#xff0c;并涵蓋一些重要的基礎概念。 1.…

數字化打造行業生態產業鏈,企業新增益全知道

在當今數字化時代&#xff0c;利用數字化打造行業生態產業鏈成為企業發展的重要戰略選擇。那么&#xff0c;這一舉措究竟能為企業帶來哪些新增益呢&#xff1f;讓我們一探究竟。 一、運營效率大幅提高 數字化技術就像一條神奇的紐帶&#xff0c;將產業鏈上的各個環節緊緊相…

Python函數 之 匿名函數

1.概念 匿名函數: 使用 lambda 關鍵字 定義的表達式&#xff0c;稱為匿名函數. 2.語法 lambda 參數, 參數: 一行代碼 # 只能實現簡單的功能&#xff0c;只能寫一行代碼 # 匿名函數 一般不直接調用&#xff0c;作為函數的參數使用的 3.代碼 4.練習 # 1, 定義匿名函數, 參數…

32路串口服務器 應用領域

32路串口服務器在多個領域有著廣泛的應用&#xff0c;以下是詳細的應用實例&#xff1a; 一、工業自動化 在工業自動化領域&#xff0c;32路串口服務器發揮著舉足輕重的作用。傳統的工業設備往往采用串口通信方式&#xff0c;而串口服務器能夠將這些設備接入網絡&#xff0c;…

C++ 開源庫

1 PDFium PDFium 是一個開源的 PDF 渲染和處理庫&#xff0c;最初由 Foxit Software 開發&#xff0c;并于2014年捐贈給了 Chromium 項目。PDFium 旨在為各種應用程序提供高效、靈活的 PDF 渲染和操作功能。 2 代碼地址 https://github.com/chromium/pdfium 主要特性 渲染…

集訓 Day 3 總結 虛樹 + dfs tree + 基環樹

虛樹 虛樹&#xff0c;顧名思義是 只關注原樹上的某些 關鍵點&#xff0c;在保留原樹祖孫關系的前提下建出的一棵邊數、點數大大減少的樹 適用于優化某些在整棵樹上進行 d p dp dp、 d f s dfs dfs 的問題 通常是題目中出現多次詢問&#xff0c;每次給出樹上的一些關鍵點&a…

11網絡層-分組轉發算法

路由 分組轉發 1&#xff09;從數據報的首部提取目的主機的IP地址D&#xff0c;得出目的網絡地址N 2&#xff09;若N就是與此路由器直接相連的某個網絡地址&#xff0c;則進行直接交付&#xff0c;不需要經過其他路由器&#xff0c;直接將數據報交付給目的主機&#xff08;這…

人為因素:為什么網絡安全不僅僅關乎技術

關注公眾號網絡研究觀獲取更多最新內容。 我們生活在一個生活與技術日益緊密交織的世界。但在構建防火墻和安裝防病毒軟件時&#xff0c;我們常常會忘記一個關鍵因素&#xff1a;人的行為。 網絡犯罪分子正是利用了人為因素&#xff0c;利用巧妙的心理戰術繞過最強大的安全措…

【MySQL基礎篇】事務

事務簡介 事務是一組操作的集合&#xff0c;它是一個不可分割的工作單位&#xff0c;事務會把所有的操作作為一個整體一起向系統提交或或撤銷操作請求&#xff0c;即這些操作要么同時成功&#xff0c;要么同時失敗。 典型事例&#xff1a;銀行轉賬操作 假設張三向李四進行轉賬…

Python:正則表達式相關整理

最近因為一些原因頻繁使用正則表達式&#xff0c;因為以前系統整理過關于正則表達式的相關知識&#xff0c;所以這里僅記錄使用期間遇到的問題。 本文內容基于re包 1. match和search方法的區別 在Python中&#xff0c;re.search和re.match都是用于匹配字符串的正則表達式函數&a…