最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push)

 更新時間:2023年02月15日 10:12:19   作者:普通網(wǎng)友  
這篇文章主要介紹了vue3.0?router路由跳轉(zhuǎn)傳參問題(router.push),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue3 router路由跳轉(zhuǎn)傳參

vue3.0取消了2.0部分api,所以路由跳轉(zhuǎn)傳值方式有所不同。

這里主要講編程式導(dǎo)航,也就是router.push(location, onComplete?, onAbort?)

vue3.0新增API:useRouter和useRoute

路由跳轉(zhuǎn)

1.首先在需要跳轉(zhuǎn)的頁面引入API—useRouter

import { useRouter } from 'vue-router'

2.在跳轉(zhuǎn)頁面定義router變量

const router = useRouter()

3.用router.push跳轉(zhuǎn)頁面

// 字符串
router.push('home')

// 對象
router.push({ path: 'home' })

// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})

// 帶查詢參數(shù),變成 /register?userId=123
router.push({ path: 'register', query: { userId: '123' }})

4.如果有參數(shù)的話,在接收頁面引入API–useRoute

import { useRoute } from 'vue-router'

5.在接收頁面定義變量route,獲取傳過來的變量

//query
let userId=route.query.userId;

//params
let userId=route.params.userId;

頁面?zhèn)鲄⑿枰⒁獾膯栴}

1.如果提供了path,params會被忽略,但query沒有這種情況,此時需要提供路由的name或手寫完整的帶有參數(shù)的path

const userId = '123'
router.push({ name: 'user', params: { userId }}) // -> /user/123
router.push({ path: `/user/${userId}` }) // -> /user/123
// 這里的 params 不生效
router.push({ path: '/user', params: { userId }}) // -> /user

2.上述規(guī)則同樣適用于router-link組件的to屬性

3.如果目的地和當(dāng)前路由相同,只有參數(shù)發(fā)生了改變 (比如從一個用戶資料到另一個/users/1->/users/2),你需要使用[這里是代碼018]來響應(yīng)這個變化 (比如抓取用戶信息)

路由(vue-router)配置及語法

來看一下vue3.0的路由(vue-router),在看vue3.0路由之前,我們先來和vue2.0的路由做個對比,看看現(xiàn)在兩者之間的區(qū)別。

1、從引入來說

vue2.0 ,通過vue-router直接引入vueRouter

import VueRouter from "vue-router";

vue3.0, 通過vue-router引入createRouter, createwebHashHistory | createWebHistory

import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'

2、創(chuàng)建實例

vue2.0,直接創(chuàng)建vueRouter實例

const router = new VueRouter({
? mode: "history",
? base: process.env.BASE_URL,
? routes,
});

vue3.0,調(diào)用createRouter方法

const router = createRouter({
? history: createWebHashHistory(),
? routes
});

3、從路由跳轉(zhuǎn)

vue2.0,直接$router

this.$router.push({path: 路徑, query: 參數(shù)})

vue3.0,調(diào)用useRouter方法

import { useRouter } from 'vue-router'
const router = useRouter();
router.push('/')

上面我們看了vue3.0的vue2.0的區(qū)別,那么接下來

我們看看vue3.0路由(router的寫法)

1、路由表配置

創(chuàng)建router.ts,在其中寫路由

const routes: Array<RouteRecordRaw> = [
? { ??
? ?path: '/', ??
? ?name: 'supplier', ? ?
? ?component: () => import(/* webpackChunkName: "body" */ '../views/supplier/index.vue')?
? ?meta: {
? ? ? ? icon: 'ion:grid-outline',
? ? ? ? title: '供應(yīng)商',
? ? ? ? orderNo: 4,
? ? ? },?
? },?
? {
? ? path: '/login',?
? ? name: 'login',
? ? component: () => import(/* webpackChunkName: "login" */ '../views/user/login/index.vue')
? ? ?meta: {
? ? ? ? title: '登錄',
? ? ? },?
? }
];
exprot default routes

2、路由出口

創(chuàng)建router下的index.ts

// 從vue-router中引入createRouter,以及模式
import {
? createRouter,
? createWebHashHistory
} from 'vue-router'
// 引入routes.ts文件
import routes from './routes.ts'
const router = createRouter({
? history: createWebHashHistory(), //createWebHashHistory是hash模式
? routes
});
?
export default router

3、注入項目

// 在main.ts/js里面
import router from './router'
createApp(App).use(router).mount('#app')

上面就是vue-router的引入以及簡單配置,那么接下來看看vue-router的頁面跳轉(zhuǎn)及傳參

1、頁面跳轉(zhuǎn)及傳參、

//從vue中引入router
import { useRouter } from "vue-router";
const router = useRouter();
//router 包含router對象的內(nèi)容;如下圖
// 跳轉(zhuǎn)我們可以使用 router.push()
// 不帶參數(shù),直接填寫路徑,寫法
router.push('path路徑') || router.push({path: "path路徑"}) ||router.push({name: 'name名字'})
// 帶參數(shù)
router.push({path: 'path路徑', query: '參數(shù)'})
router.push({name: 'name名字', params: '參數(shù)'})

2、接參

// 引入route
import { useRoute } from "vue-router";
const route = useRoute()
// route參數(shù),如下圖
// 如果對應(yīng)params傳遞參數(shù)
route.params.參數(shù)值
// 如果使用query傳參
route.query.參數(shù)

以上內(nèi)容就是vue-router里面的參數(shù)以及頁面跳轉(zhuǎn),參數(shù),接參的方式。其中路由中重定向(redirect),路由守衛(wèi)并沒有變化。那么我們來看看路由守衛(wèi)的前置守衛(wèi)

路由守衛(wèi)-前置守衛(wèi)(beforeEach)

const WhiteList = ['/login']; // 配置白名單
router.beforeEach((to, from, next)=> {
  if (WhiteList.indexOf(to.fullPath) !== -1) { // 判斷前往頁面是都存在于白名單
    next()
  } else {
    if (localStorage.getItem('userInfo')) {// 判斷用戶是否d登錄
      if (to.name) { // 判斷是否存在路由的name名字,如果有則代表有路由表已經(jīng)存在,name繼續(xù)前往,反之,則不存在
        next()
      }
      else {// 當(dāng)路由不存在,錄取路由,動態(tài)添加路由表,
        let localRoutes: any = localStorage.getItem('routes');
        let recursionList = recursionParam(JSON.parse(localRoutes));
        for (let item of recursionList) {
          router.addRoute(item)
        }
        next({ ...to, replace: true })
      }
    } else {
      next('/login')
    }
  }
});

注意哦:

vue3.0中的addRoute()添加的是路由對象,而不是整個路由數(shù)組。

vue2.0是addRoutes(),直接添加路由表的數(shù)組。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中checkbox如何修改為圓形樣式

    vue中checkbox如何修改為圓形樣式

    這篇文章主要介紹了vue中checkbox如何修改為圓形樣式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vite和Vue CLI的優(yōu)劣

    Vite和Vue CLI的優(yōu)劣

    這篇文章主要介紹了Vite比Vue CLI快在哪里,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下
    2021-01-01
  • vue3中使用ref獲取dom的操作代碼

    vue3中使用ref獲取dom的操作代碼

    ref在我們開發(fā)項目當(dāng)中很重要的,在?Vue?中使用?ref?可以提高代碼的可讀性和維護性,因為它直接標識出了組件中需要操作的具體元素或組件實例,本文我將給大家?guī)淼氖莢ue3中用ref獲取dom的操作,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下
    2024-06-06
  • Vue中使用better-scroll實現(xiàn)輪播圖組件

    Vue中使用better-scroll實現(xiàn)輪播圖組件

    better-scroll 是一款重點解決移動端(已支持 PC)各種滾動場景需求的插件。這篇文章主要介紹了Vue中使用better-scroll實現(xiàn)輪播圖組件的實例代碼,需要的朋友可以參考下
    2020-03-03
  • vue使用video.js實現(xiàn)播放m3u8格式的視頻

    vue使用video.js實現(xiàn)播放m3u8格式的視頻

    這篇文章主要為大家詳細介紹了vue如何使用video.js實現(xiàn)播放m3u8格式的視頻,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • dataV大屏在vue中的使用方式

    dataV大屏在vue中的使用方式

    這篇文章主要介紹了dataV大屏在vue中的使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 一篇文章,教你學(xué)會Vue CLI 插件開發(fā)

    一篇文章,教你學(xué)會Vue CLI 插件開發(fā)

    這篇文章主要介紹了Vue CLI插件開發(fā),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 前端XSS攻擊場景詳解與Vue.js處理XSS的方法(vue-xss)

    前端XSS攻擊場景詳解與Vue.js處理XSS的方法(vue-xss)

    這篇文章主要給大家介紹了關(guān)于前端XSS攻擊場景與Vue.js使用vue-xss處理XSS的方法,介紹了實際工作中渲染數(shù)據(jù)時遇到XSS攻擊時的防范措施,以及解決方案,需要的朋友可以參考下
    2024-02-02
  • vue學(xué)習(xí)筆記五:在vue項目里面使用引入公共方法詳解

    vue學(xué)習(xí)筆記五:在vue項目里面使用引入公共方法詳解

    這篇文章主要介紹了在vue項目里面使用引入公共方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue.js實現(xiàn)簡單購物車功能

    vue.js實現(xiàn)簡單購物車功能

    這篇文章主要為大家詳細介紹了vue.js實現(xiàn)簡單購物車功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05

最新評論

吴忠市| 通道| 张家界市| 丰台区| 沙河市| 绵阳市| 密山市| 平果县| 乐清市| 潼关县| 临颍县| 铜川市| 山西省| 包头市| 呼玛县| 库尔勒市| 林西县| 牡丹江市| 修水县| 尚志市| 舒兰市| 女性| 新绛县| 呼伦贝尔市| 巴彦县| 侯马市| 凌源市| 吉木萨尔县| 麟游县| 峡江县| 文成县| 鄂托克前旗| 建平县| 盐亭县| 余江县| SHOW| 崇阳县| 锡林浩特市| 太白县| 凌海市| 西华县|