Vue3使用vue-router如何實現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取
vue-router實現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取
路由跳轉(zhuǎn)和傳參
import { defineComponent, onMounted, reactive, readonly, ref } from 'vue'; import { useRouter, useRoute } from 'vue-router'; export default defineComponent({ name: 'Login', setup() { const router = useRouter(), route = useRoute(); const submitForm = () => { formRef.value?.validate((valid) => { if (valid) { login({ strategy: 'local', ...ruleForm }) .then((res: any) => { // 獲取參數(shù)和路由跳轉(zhuǎn) const redirect: string = route.query && route.query.redirect; if (redirect) { router.replace(redirect); } else { router.push('/home'); } return true; }) .catch((e) => { ... }); } else { ... return false; } }); }; return { ..., submitForm }; } });
路由跳轉(zhuǎn)三種方法的總結(jié)
一、第一種
1、路由設(shè)置方式
{`在這里插入代碼片` ? path: '/detail/:id', ? name: 'detail', ? meta: { keepAlive: true }, ? component: () => import('../pages/detail/index') }
2、路由跳轉(zhuǎn)模式
this.$router.push( ? { ? ? path: `/detail/1` ? } )
3、獲取參數(shù)方式
let detailId = this.$route.params.id
注意: params 傳參相當(dāng)于是路由的一部分是必須傳的東西,經(jīng)過驗證不傳頁面會跳轉(zhuǎn)到空白頁
該方式刷新頁面id 不丟失
二、第二種
1、路由設(shè)置方式
{ ? path: '/detail/:id', ? name: 'detail', ? meta: { keepAlive: true }, ? component: () => import('../pages/detail/index') }
2、路由跳轉(zhuǎn)模式
this.$router.push( ? { ? ? name: 'Detail', ? ? params: { ? ? ? id ? ? } ? } )
3、獲取參數(shù)方式
let detailId = this.$route.params.id
注意:此方式傳參 路由設(shè)置方式中的 id 可以傳也可以不傳,不傳刷新頁面id 會丟失
該方式刷新頁面id 不丟失
三、第三種
1、路由設(shè)置方式
{ ? path: '/detail', ? name: 'detail', ? meta: { keepAlive: true }, ? component: () => import('../pages/detail/index') }
2、路由跳轉(zhuǎn)模式
this.$router.push( ? { ? ? path: 'Detail', ? ? query: { ? ? ? id ? ? } ? } )
3、獲取參數(shù)方式
let detailId = this.$route.query.id
注意:此方式傳參 路由設(shè)置方式中的 id 不能寫,因為寫了就是router 的一部分,這樣就會匹配不到, 此方式刷新頁面id 不丟失
http://localhost:8080/#/detail?id=1
總結(jié): params一旦設(shè)置在路由,params就是路由的一部分,如果這個路由有params傳參,但是在跳轉(zhuǎn)的時候沒有傳這個參數(shù),會導(dǎo)致跳轉(zhuǎn)失敗或者頁面會沒有內(nèi)容。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
- vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)的實例詳解(params/query)
- Vue中$router.push()路由切換及如何傳參和獲取參數(shù)
- vue-router路由傳參及隱藏參數(shù)問題
- vue-router如何實時動態(tài)替換路由參數(shù)(地址欄參數(shù))
- 如何處理vue router 路由傳參刷新頁面參數(shù)丟失
- vue router動態(tài)路由設(shè)置參數(shù)可選問題
- vue-router路由參數(shù)刷新消失的問題解決方法
- 詳解vue-router2.0動態(tài)路由獲取參數(shù)
- Vue Router中獲取路由傳遞過來的參數(shù)(方法詳解)
相關(guān)文章
vue2.0構(gòu)建單頁應(yīng)用最佳實戰(zhàn)
這篇文章主要為大家分享了vue2.0構(gòu)建單頁應(yīng)用最佳實戰(zhàn)案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04