位置: IT常识 - 正文

Vue3的vue-router超详细使用(vue–router)

编辑:rootadmin
Vue3的vue-router超详细使用 从零开始搭建Vue3环境(vite+ts+vue-router),手拉手做一个router项目搭建vue3环境vue-router入门(宝宝模式)vue-router基础(青年模式)一。动态路由匹配1.带参数的动态路由匹配2.捕获所有路由或404 Not Found路由二。嵌套路由三。编程式导航1.router.push()方法的使用2.router.replace()方法的使用3.router.go()方法的使用搭建vue3环境

推荐整理分享Vue3的vue-router超详细使用(vue–router),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3 vue-router,vue3.0 router,vue $route,vue–router,vue3 vue-router,vue3 vue-router,vue3 router-view,vue3.0 router,内容如对您有帮助,希望把文章链接给更多的朋友!

我们使用vite来搭建vue3环境(没有安装vite需要去安装vite)

npm create vite routerStudy

在命令行选择

cd routerStudynpm inpm run dev

环境搭建成功!!

vue-router入门(宝宝模式)下载vue-routernpm i vue-router@4新建以下文件 src/components/File1.vue:<template> <div> 这是文件一 </div></template><script setup lang="ts"></script><style scoped></style>

src/components/File2.vue:

<template> <div> 这是文件二 </div></template><script setup lang="ts"></script><style scoped></style>

在src下新建router文件夹 在router文件夹下新建router.ts:

import { createRouter,createWebHistory,createWebHashHistory } from 'vue-router'import File1 from '../components/File1.vue'import File2 from '../components/File2.vue'const routes = [ { path: '/', component:File1 }, { path: '/file2', component:File2 }]const router = createRouter({ // history: createWebHistory(), history:createWebHashHistory(), routes,})export default router;修改src/main.tsimport { createApp } from 'vue'import './style.css'import App from './App.vue'import router from './router/router'createApp(App).use(router).mount('#app')修改src/components/HelloWorld.vue:<script setup lang="ts"></script><template> <router-view/> <button><router-link to="/">去文件一</router-link></button> <button><router-link to="/file2">去文件二</router-link></button> </template><style scoped></style>点击按钮能够切换成功则使用成功vue-router基础(青年模式)一。动态路由匹配1.带参数的动态路由匹配

当我们需要对每个用户加载同一个组件,但用户id不同。我们就需要在vue-router种使用一个动态字段来实现,再通过$routr.params来获取值:

我们用具体实例来实现一下:

(1)修改src/router/router.ts:

import { createRouter,createWebHistory,createWebHashHistory } from 'vue-router'import File1 from '../components/File1.vue'import File2 from '../components/File2.vue'const routes = [ { path: '/', component:File1 }, { path: '/file2/:username/abc/:userid', //注意看这个 component:File2 }]const router = createRouter({ history: createWebHistory(), // history:createWebHashHistory(), routes,})export default router;

(2)修改组件HelloWorld.vue: (3) 修改组件File2.vue:

<template> <div> 这是文件二 </div></template><script setup lang="ts">import {getCurrentInstance,onMounted } from 'vue'const instance = getCurrentInstance() if (instance != null) { const _this = instance.appContext.config.globalProperties //vue3获取当前thisonMounted(() => { console.log(_this.$route.params) })}</script><style scoped></style>

(4)点击去文件二按钮 (5)查看控制台

2.捕获所有路由或404 Not Found路由Vue3的vue-router超详细使用(vue–router)

当用户在导航栏乱输一通后,路由表中没有对应的路由,这时候,就需要将用户转去404页面。那么 我们该如何处理呢?

(1)修改router/router.ts:

import { createRouter,createWebHistory,createWebHashHistory } from 'vue-router'import File1 from '../components/File1.vue'import File2 from '../components/File2.vue'import NotFound from '../components/NotFound.vue'import UserGeneric from '../components/UserGeneric.vue'const routes = [ { path: '/', component:File1 }, { path: '/file2/:username/abc/:userid', component:File2 }, // 将匹配所有内容并将其放在 `$route.params.pathMatch` 下 { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound }, // 将匹配以 `/user-` 开头的所有内容,并将其放在 `$route.params.afterUser` 下 { path: '/user-:afterUser(.*)', component: UserGeneric },]const router = createRouter({ history: createWebHistory(), // history:createWebHashHistory(), routes,})export default router;

(2)新建组件NotFound.vue:

<template> <div> 糟糕!页面没有找到。。。呜呜呜 </div></template><script setup lang="ts">import {getCurrentInstance,onMounted } from 'vue'const instance = getCurrentInstance() if (instance != null) { const _this = instance.appContext.config.globalProperties //vue3获取当前thisonMounted(() => { console.log(_this.$route.params) })}</script><style scoped></style>

(3)修改HelloWorld.vue (4)点击去404页面按钮(或者在地址栏乱写一通) (5)出现404页面,说明运行成功!!!

二。嵌套路由

路由是可以嵌套的。例如: 嵌套的理解挺简单的,我就不多叭叭了,直接上代码,看完就懂了。 (1)新建组件Children1.vue:

<template> <div> 我是孩子1 </div></template><script setup lang="ts"></script><style scoped></style>

(2)新建组件Children2.vue:

<template> <div> 我是孩子2 </div></template><script setup lang="ts"></script><style scoped></style>

(3)修改router/router.ts:

import { createRouter,createWebHistory,createWebHashHistory } from 'vue-router'import File1 from '../components/File1.vue'import File2 from '../components/File2.vue'import NotFound from '../components/NotFound.vue'import UserGeneric from '../components/UserGeneric.vue'import Children1 from '../components/Children1.vue'import Children2 from '../components/Children2.vue'const routes = [ { path: '/', component: File1, }, { path: '/file2', component: File2, children: [ //使用嵌套路由 { path: 'children1', component:Children1 }, { path: 'children2', component:Children2 }, ] }, { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound }, { path: '/user-:afterUser(.*)', component: UserGeneric },]const router = createRouter({ history: createWebHistory(), // history:createWebHashHistory(), routes,})export default router;

(4)修改组件HelloWorld.vue: (5)修改组件File2.vue:

<template> <div> 这是文件二 <div> 我是文件二里的内容 <router-view/> <button><router-link to="/file2/children1">找孩子1</router-link></button> <button><router-link to="/file2/children2">找孩子2</router-link></button> </div> </div></template><script setup lang="ts"></script><style scoped></style>

(6)先点去文件二,再点击找孩子1按钮,出现即成功!!

三。编程式导航

除了使用/< router-link/> 创建 a 标签来定义导航链接,我们还可以借助 router 的实例方法,通过编写代码来实现。

1.router.push()方法的使用

(1)修改组件NotFound.vue:

<template> <div> 糟糕!页面没有找到。。。呜呜呜 </div></template><script setup lang="ts">import {getCurrentInstance,onMounted } from 'vue'const instance = getCurrentInstance() if (instance != null) { const _this = instance.appContext.config.globalProperties //vue3获取当前this // 1.字符串路径 _this.$router.push('/file2/children2') // 2.带有路径的对象 // _this.$router.push({path:'/file2/children2'}) // 3.命名的路由,并加上参数,让路由建立 url // _this.$router.push({name:'file2',params:{username:'children2'}}) // 4.带查询参数,结果是 /register?plan=private // _this.$router.push({ path: '/file2/children2', query: {userid:'123'} }) onMounted(() => { console.log(_this.$route.params) })}</script><style scoped></style>

(2)再点“去404页面”,发现没有去404页面了,说明编程式导航成功!!

2.router.replace()方法的使用

它的作用类似于 router.push,唯一不同的是,它在导航时不会向 history 添加新记录,正如它的名字所暗示的那样——它取代了当前的条目。

修改组件NotFound.vue:

<template> <div> 糟糕!页面没有找到。。。呜呜呜 </div></template><script setup lang="ts">import {getCurrentInstance,onMounted } from 'vue'const instance = getCurrentInstance() if (instance != null) { const _this = instance.appContext.config.globalProperties //vue3获取当前this // 一。router.push的使用: // 1.字符串路径 // _this.$router.push('/file2/children2') // 2.带有路径的对象 // _this.$router.push({path:'/file2/children2'}) // 3.命名的路由,并加上参数,让路由建立 url // _this.$router.push({name:'file2',params:{username:'children2'}}) // 4.带查询参数,结果是 /register?plan=private // _this.$router.push({ path: '/file2/children2', query: {userid:'123'} }) // 二。router.replace的使用: _this.$router.replace('/file2/children1') onMounted(() => { console.log(_this.$route.params) })}</script><style scoped></style>3.router.go()方法的使用

修改组件NotFound.vue:

<template> <div> 糟糕!页面没有找到。。。呜呜呜 </div></template><script setup lang="ts">import {getCurrentInstance,onMounted } from 'vue'const instance = getCurrentInstance() if (instance != null) { const _this = instance.appContext.config.globalProperties //vue3获取当前this // 一。router.push的使用: // 1.字符串路径 // _this.$router.push('/file2/children2') // 2.带有路径的对象 // _this.$router.push({path:'/file2/children2'}) // 3.命名的路由,并加上参数,让路由建立 url // _this.$router.push({name:'file2',params:{username:'children2'}}) // 4.带查询参数,结果是 /register?plan=private // _this.$router.push({ path: '/file2/children2', query: {userid:'123'} }) // 二。router.replace的使用: // _this.$router.replace('/file2/children1') // 三。router.go的使用: _this.$router.go(-1) //相当于点击回退一次 onMounted(() => { console.log(_this.$route.params) })}</script><style scoped></style>
本文链接地址:https://www.jiuchutong.com/zhishi/294518.html 转载请保留说明!

上一篇:SQL代码编码原则和规范(sql代码大全)

下一篇:React框架第七课 语法基础课《第一课React你好世界》(react框架结构)

  • 关于QQ营销之推广策划经验(qq营销推广方法和手段)

    关于QQ营销之推广策划经验(qq营销推广方法和手段)

  • word拐弯箭头怎么去掉(word拐弯箭头怎么做)

    word拐弯箭头怎么去掉(word拐弯箭头怎么做)

  • 运算器中包含什么部件(运算器中包含什么)

    运算器中包含什么部件(运算器中包含什么)

  • 人证核验提示系统繁忙(人证核验次数过多)

    人证核验提示系统繁忙(人证核验次数过多)

  • 腾讯会议不能屏幕共享(腾讯会议不能屏幕共享爱奇艺)

    腾讯会议不能屏幕共享(腾讯会议不能屏幕共享爱奇艺)

  • mla_al10是华为什么型号(华为mla-al10参数)

    mla_al10是华为什么型号(华为mla-al10参数)

  • stk-al00是华为哪个型号(华为stk_al00什么型号)

    stk-al00是华为哪个型号(华为stk_al00什么型号)

  • hba卡和光纤网卡区别(hba光纤卡怎么使用)

    hba卡和光纤网卡区别(hba光纤卡怎么使用)

  • 微信群主退出群怎样恢复(微信群主退出群后群还存在吗)

    微信群主退出群怎样恢复(微信群主退出群后群还存在吗)

  • 喷雾器充电器一直绿灯怎么修(喷雾器充电器一直亮红灯怎么回事)

    喷雾器充电器一直绿灯怎么修(喷雾器充电器一直亮红灯怎么回事)

  • 微信创建群聊没发消息别人知道吗(创建的微信群聊不见了怎么办)

    微信创建群聊没发消息别人知道吗(创建的微信群聊不见了怎么办)

  • 电脑不受控制乱动(电脑不受控制乱操作怎么回事)

    电脑不受控制乱动(电脑不受控制乱操作怎么回事)

  • 如何从ios13退回12(怎么退回ios13.6)

    如何从ios13退回12(怎么退回ios13.6)

  • iphonex分辨率是2k吗(苹果x分辨率属于什么级别)

    iphonex分辨率是2k吗(苹果x分辨率属于什么级别)

  • wan口连接类型选哪个(wan口连接类型l2tp)

    wan口连接类型选哪个(wan口连接类型l2tp)

  • 微信群消息免打扰还响(微信群消息免打扰@所有人还是提醒)

    微信群消息免打扰还响(微信群消息免打扰@所有人还是提醒)

  • airpods充电线是什么接口(airpods充电线是什么)

    airpods充电线是什么接口(airpods充电线是什么)

  • 苹果手机要开扬声器才有声音(苹果手机开扬声器才有声音怎么回事)

    苹果手机要开扬声器才有声音(苹果手机开扬声器才有声音怎么回事)

  • vivo音乐怎么设置桌面歌词(vivo音乐怎么设置铃声)

    vivo音乐怎么设置桌面歌词(vivo音乐怎么设置铃声)

  • nova4发热怎么解决(nova4手机发热是怎么回事)

    nova4发热怎么解决(nova4手机发热是怎么回事)

  • 安卓tim下载的文件在哪里(安卓tim下载的文件打不开)

    安卓tim下载的文件在哪里(安卓tim下载的文件打不开)

  • supersu怎么用(supersu使用教程)

    supersu怎么用(supersu使用教程)

  • 探探好友恢复列表在哪(探探的好友怎么恢复)

    探探好友恢复列表在哪(探探的好友怎么恢复)

  • 如何添加一个离线账户(怎么添加一个)

    如何添加一个离线账户(怎么添加一个)

  • 如何在Windows 11中映射网络驱动器(如何在Windows 11上卸载更新)

    如何在Windows 11中映射网络驱动器(如何在Windows 11上卸载更新)

  • 上海浦东森林心形洞穴鸟瞰图,中国 (© Yaorusheng/Getty Images)(浦东森林村)

    上海浦东森林心形洞穴鸟瞰图,中国 (© Yaorusheng/Getty Images)(浦东森林村)

  • 应交税费负数调整到其他流动资产
  • 房屋赠与双方办理流程
  • 航天金税财务软件使用说明
  • 小企业一定要买五险吗
  • 企业的内部银行
  • 有社保的工资计提和发放
  • 税务局多扣的一笔钱
  • 眼镜所属行业怎么填写
  • 房东收到房租转让费会计处理
  • 实收资本收到后用途
  • 汇兑还款会计分录
  • 劳务公司增值税怎么抵扣
  • 小规模季度超过30万是全额纳税吗
  • 企业房产税如何计算缴纳
  • 事业单位考试一门多长时间
  • 教学用品采购
  • 专用发票不抵扣联可以当普票用吗?
  • 税控机抵扣网上申报如何做?
  • 托收承付结算方式
  • mac怎么连接校园网网线
  • 票据背书怎么做账
  • 哪些业务可以进入共享服务中心
  • 生育津贴申请表打印
  • 小规模纳税人税控设备可以抵扣吗设备
  • 销售旧设备如何开票
  • 财务新手要注意哪些事项
  • 公司清算的补偿方案是不是应该公布了
  • php获取当天是星期几
  • wordpress界面
  • 小企业法人怎么交社保
  • php中的正则表达式怎么使用
  • 营改增之前的建筑业税率是多少
  • 长期借款利息的账务处理涉及的会计科目有
  • bootstrap-
  • 企业的营业税金及附加
  • 货币资金包括哪些方面
  • three.js gui
  • 资质使用费怎么收
  • php上传大视频
  • js怎么执行函数
  • 教育培训学校是什么意思
  • 固定什么意思
  • 资源税类的税种是
  • 营业总收入同比增长怎么分析
  • 出口退税一般风险商品
  • 政府扶持资金的优缺点
  • 小微企业营业外收入二级科目怎么
  • 独立核算的单位是什么意思
  • 现金存银行凭证
  • 限定性和非限定性资产
  • 购销业务活动包括哪些
  • 企业凭证处理流程图
  • 开办费计入期间费用明细表
  • 生产型企业成品入库会计分录
  • 会计出账入账怎么做
  • 常见ui
  • 建筑企业人工费计入什么科目
  • sqlserver存储过程if语句
  • mssql数据库的账号密码
  • win7系统设置打印机共享
  • 苹果mac操作系统版本
  • ntfs权限设置步骤
  • 格式化不干净
  • ibm文件是什么意思
  • windows屏蔽网络设置的方法不包括以下哪种
  • win7电脑显示屏显示不全怎么调整
  • 在Linux系统中安装镜像步骤
  • fragment懒加载原理
  • 通过扣缴义务人申报和综合所得年度自行申报
  • jquery实现表单验证
  • 认识 认知
  • cocos2dx3.3 便条提示语功能简单实现
  • NeHe OpenGL Lesson 9
  • linux怎么ssh远程
  • unitymol
  • 怎么关闭android
  • 获取python的运行结果
  • 网上交车辆购置税怎么交
  • 契税5年什么意思?
  • 建安服务税率是多少
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设