當(dāng)我們使用Vue編寫(xiě)Web應(yīng)用程序時(shí),我們可能會(huì)注意到在瀏覽器的地址欄中看到一些奇怪的字符。這些字符是URL中的查詢(xún)參數(shù),被Vue用來(lái)操縱Web應(yīng)用程序的狀態(tài)。在Vue中,我們經(jīng)常使用路由來(lái)導(dǎo)航不同的組件,而URL中的查詢(xún)參數(shù)則可以幫助我們傳遞數(shù)據(jù)和控制應(yīng)用程序的行為。
// 示例代碼 import { mapState } from 'vuex' export default { computed: { ...mapState(['counter']) }, created() { const { query } = this.$route if (query.foo) { this.$store.dispatch('increment') } } }
上面的代碼是一個(gè)Vue組件,其中使用Vuex來(lái)管理狀態(tài)。通過(guò)Vuex我們可以將狀態(tài)映射到組件的計(jì)算屬性中,如上面代碼中的counter。在created生命周期函數(shù)中,我們獲取當(dāng)前路由的查詢(xún)參數(shù),如果存在名為foo的參數(shù),我們就調(diào)用increment動(dòng)作來(lái)增加counter的值。
在Vue中,我們也可以使用URL中的查詢(xún)參數(shù)來(lái)控制視圖的行為。例如,在一個(gè)表單提交之后,我們可以在URL中添加查詢(xún)參數(shù),然后在提交完成后自動(dòng)重定向回原來(lái)的頁(yè)面。這樣可以使得應(yīng)用程序的行為更加自然。
// 示例代碼 export default { methods: { onSubmit() { // 提交表單數(shù)據(jù) this.$router.push({ path: '/success', query: { message: '提交成功!' } }) } } }
上述的代碼中,我們?cè)谔峤槐韱沃螅ㄟ^(guò)$router實(shí)例的push函數(shù)來(lái)切換到成功頁(yè)面。同時(shí),我們?cè)赨RL中添加了名為message的查詢(xún)參數(shù),它會(huì)被成功頁(yè)面所使用。在成功頁(yè)面的組件中,我們可以使用$route.query來(lái)獲取這個(gè)參數(shù)。
除了query參數(shù),Vue中還有其他的路由選項(xiàng)。在使用路由時(shí),我們可以指定路由的名稱(chēng)、參數(shù)、狀態(tài)等信息,并且可以使用編程式導(dǎo)航來(lái)實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。通過(guò)理解URL中的查詢(xún)參數(shù),我們可以更加靈活地使用Vue的路由功能。