Vue router的query對象里的值的問題


在使用 $router.push() 時,如果使用了query,則可以在跳轉后從query中獲取到對應的參數。如果傳的是字符串自然沒問題,但是如果傳的其他類型的數據,在跳轉之后是正常的,而跳轉之后再刷新一遍頁面的話,query里面的屬性的值都會變成字符串。例如:

this.$router.push({ name:'product', query: {canSee: false} });

  最初跳轉之后,this.$route.query.canSee打印的值是Boolean類型的。然后刷新一下,值就變成了String類型了。個人猜測是因為刷新后query的值是直接從頁面URL中取的,而在頁面URL上的參數的類型只能是字符串類型。

解決方法

  1. 在傳值之前把要傳的參數單獨放到一個對象里,在放到query里面,然后進行JSON.stringify()處理,到了目標頁面后再進行JSON.parse()處理,還原對象。這種方法的好處是可以一次性處理多個參數,而且適用度高,建議使用這種方法。

  2. 傳值前不做處理,到了目標頁面后再單獨對原本為非字符串的數據進行JSON.parse()處理。缺點是字符串類型的數據不能如此處理,要確保該數據不是字符串類型的。局限性大,不推薦適用。

 

相關文章:router路由跳轉使用query傳遞參數刷新后數據無法獲取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM