欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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')

// 對(duì)象
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會(huì)被忽略,但query沒有這種情況,此時(shí)需要提供路由的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ā)生了改變 (比如從一個(gè)用戶資料到另一個(gè)/users/1->/users/2),你需要使用[這里是代碼018]來響應(yīng)這個(gè)變化 (比如抓取用戶信息)

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

來看一下vue3.0的路由(vue-router),在看vue3.0路由之前,我們先來和vue2.0的路由做個(gè)對(duì)比,看看現(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)建實(shí)例

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

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、注入項(xiàng)目

// 在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對(duì)象的內(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ù),如下圖
// 如果對(duì)應(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)路由不存在,錄取路由,動(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()添加的是路由對(duì)象,而不是整個(gè)路由數(shù)組。

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

總結(jié)

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

相關(guān)文章

  • Vue實(shí)現(xiàn)監(jiān)聽某個(gè)元素滾動(dòng),親測(cè)有效

    Vue實(shí)現(xiàn)監(jiān)聽某個(gè)元素滾動(dòng),親測(cè)有效

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

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

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

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

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

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

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

    element-plus 如何設(shè)置 el-date-picker 彈出框位置

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

    vue實(shí)現(xiàn)web滾動(dòng)條分頁

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

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

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

    vue做移動(dòng)端適配最佳解決方案(親測(cè)有效)

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

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

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

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

    最近做 Vue 開發(fā),因?yàn)橛胁簧夙撁嫔婕暗浇痤~輸入,產(chǎn)品老是覺得用原生的 input 進(jìn)行金額輸入的話 體驗(yàn)很不好,于是自己動(dòng)手寫了一個(gè)使用Vue自定義數(shù)字鍵盤組件,具體實(shí)現(xiàn)代碼大家參考下本文
    2017-12-12

最新評(píng)論