Vue router 是 Vue.js 官方提供的路由管理器,它可以將應(yīng)用分割成多個頁面,通過 URL 地址來匹配不同的頁面,實現(xiàn)前端路由。Vue router 除了支持基礎(chǔ)的路由功能,還支持了路由傳參。而本篇文章將詳細講解如何在 Vue router 中傳遞數(shù)組。
當需要傳遞一個數(shù)組給另一個組件時,常規(guī)的做法是使用 props。而在 Vue router 中,則可以通過 router-link 搭配 to 屬性來傳遞數(shù)組。to 屬性值可以是一個字符串或一個對象,如果是一個字符串,則該字符串會被用作瀏覽器 URL,如果是一個對象,則可以自行設(shè)置 URL,或者使用動態(tài)參數(shù)和查詢參數(shù)。
<!--使用字符串傳遞數(shù)組-->
<router-link :to="'/product/' + products.join() ">產(chǎn)品</router-link>
<!--使用對象傳遞數(shù)組-->
<router-link :to="{ path: '/product', query: { productId: products.join() } }">產(chǎn)品</router-link>
如上代碼所示,通過將數(shù)組與字符串或?qū)ο笃唇釉谝黄饋韨鬟f數(shù)據(jù),然后使用 router-link 來跳轉(zhuǎn)。在跳轉(zhuǎn)到目標組件后,可以使用 $route 對象來獲取傳遞過來的數(shù)組。
export default {
props: ['value'],
data () {
return {
products: this.$route.query.productId.split(',')
}
},
mounted () {
console.log(this.products)
}
}
在目標組件中,可以在 mounted 鉤子函數(shù)中通過 $route.query 對象來獲取傳遞過來的數(shù)組,然后進行后續(xù)操作。
需要注意的是,傳遞數(shù)組時要避免數(shù)組中包含特殊字符,如 / 或 ? 等,否則會導致路由解析錯誤,可以使用 encodeURIComponent 函數(shù)來對數(shù)組進行編碼,解碼時使用 decodeURIComponent 函數(shù)。
通過以上簡單的步驟,就可以在 Vue router 中輕松傳遞數(shù)組,并在目標組件中獲取到數(shù)組數(shù)據(jù)。當然,如果需要傳遞更復雜的數(shù)據(jù)類型,還可以使用 store 或者 vuex 進行狀態(tài)管理。