亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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)傳值方式有所不同。

這里主要講編程式導航,也就是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.如果目的地和當前路由相同,只有參數(shù)發(fā)生了改變 (比如從一個用戶資料到另一個/users/1->/users/2),你需要使用[這里是代碼018]來響應這個變化 (比如抓取用戶信息)

路由(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: '供應商',
? ? ? ? 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ù),如下圖
// 如果對應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 {// 當路由不存在,錄取路由,動態(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ù)組。

總結

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

相關文章

  • Vue實現(xiàn)監(jiān)聽某個元素滾動,親測有效

    Vue實現(xiàn)監(jiān)聽某個元素滾動,親測有效

    這篇文章主要介紹了Vue實現(xiàn)監(jiān)聽某個元素滾動,親測有效!具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 優(yōu)化Vue頁面中的表單布局和樣式的技巧

    優(yōu)化Vue頁面中的表單布局和樣式的技巧

    在日常開發(fā)中,Vue 項目中的表單布局和樣式優(yōu)化是一個重要的環(huán)節(jié),通過合理的布局與美觀的樣式設計,不僅可以提升用戶體驗,還能增加頁面的實用性和觀賞性,本文將總結幾個常見的表單和表格布局優(yōu)化的技巧,需要的朋友可以參考下
    2024-10-10
  • Node.js+Vue腳手架環(huán)境搭建的方法步驟

    Node.js+Vue腳手架環(huán)境搭建的方法步驟

    這篇文章主要介紹了Node.js+Vue腳手架環(huán)境搭建的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2020-03-03
  • vue源碼之首次渲染過程詳解

    vue源碼之首次渲染過程詳解

    這篇文章主要為大家詳細介紹了vue源碼之首次渲染過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • element-plus 如何設置 el-date-picker 彈出框位置

    element-plus 如何設置 el-date-picker 彈出框位置

    el-date-picker 組件會自動根據(jù)空間范圍進行選擇比較好的彈出位置,但特定情況下,它自動計算出的彈出位置并不符合我們的實際需求,故需要我們手動設置,這篇文章主要介紹了element-plus 如何設置 el-date-picker 彈出框位置,需要的朋友可以參考下
    2024-07-07
  • vue實現(xiàn)web滾動條分頁

    vue實現(xiàn)web滾動條分頁

    這篇文章主要為大家詳細介紹了vue實現(xiàn)web滾動條分頁,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 關于ElementPlus中的表單驗證規(guī)則詳解

    關于ElementPlus中的表單驗證規(guī)則詳解

    這篇文章主要介紹了關于ElementPlus中的表單驗證,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • vue做移動端適配最佳解決方案(親測有效)

    vue做移動端適配最佳解決方案(親測有效)

    這篇文章主要介紹了vue做移動端適配最佳解決方案(親測有效),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • Vue 讀取HTMLCollection列表的length為0問題

    Vue 讀取HTMLCollection列表的length為0問題

    這篇文章主要介紹了Vue 讀取HTMLCollection列表的length為0問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 使用Vue自定義數(shù)字鍵盤組件(體驗度極好)

    使用Vue自定義數(shù)字鍵盤組件(體驗度極好)

    最近做 Vue 開發(fā),因為有不少頁面涉及到金額輸入,產(chǎn)品老是覺得用原生的 input 進行金額輸入的話 體驗很不好,于是自己動手寫了一個使用Vue自定義數(shù)字鍵盤組件,具體實現(xiàn)代碼大家參考下本文
    2017-12-12

最新評論