位置: 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框架结构)

  • 电子商务企业怎样做好微博营销?(电子商务企业怎么选择物流模式)

    电子商务企业怎样做好微博营销?(电子商务企业怎么选择物流模式)

  • xrxsmax区别(xr,xsmax哪个好)

    xrxsmax区别(xr,xsmax哪个好)

  • 荣耀30pro支持wifi6吗(荣耀30pro支持wifi6十)

    荣耀30pro支持wifi6吗(荣耀30pro支持wifi6十)

  • 华为nova4e闹钟铃声怎么设置(nova4闹钟铃声怎么设置)

    华为nova4e闹钟铃声怎么设置(nova4闹钟铃声怎么设置)

  • 计算机中声卡主要的功能(声卡在计算机系统中起什么作用?其工作原理如何)

    计算机中声卡主要的功能(声卡在计算机系统中起什么作用?其工作原理如何)

  • 网店基础数据指什么(网店数据分析报告怎么写)

    网店基础数据指什么(网店数据分析报告怎么写)

  • 支付宝怎么查对方身份证号(支付宝怎么查对方真实姓名)

    支付宝怎么查对方身份证号(支付宝怎么查对方真实姓名)

  • 电脑一键删除按哪个键(电脑怎么按删除键快速删除)

    电脑一键删除按哪个键(电脑怎么按删除键快速删除)

  • 微视提现不了了应该怎么办(微视提现提不了怎么办)

    微视提现不了了应该怎么办(微视提现提不了怎么办)

  • 快手已重置能恢复吗(快手重置了会怎样)

    快手已重置能恢复吗(快手重置了会怎样)

  • 腾讯极速版和正常版有什么区别(腾讯极速版跟腾讯视频有什么区别)

    腾讯极速版和正常版有什么区别(腾讯极速版跟腾讯视频有什么区别)

  • qq辅助验证失败了怎么办(QQ辅助验证失败怎么搞)

    qq辅助验证失败了怎么办(QQ辅助验证失败怎么搞)

  • 苹果xr可以用两张电信卡吗(苹果xr可以用两张手机卡吗)

    苹果xr可以用两张电信卡吗(苹果xr可以用两张手机卡吗)

  • 网络层的设备有哪些(网络层的设备有哪些类型)

    网络层的设备有哪些(网络层的设备有哪些类型)

  • 花呗二维码收款怎么开通(支付宝怎么开花呗二维码收款)

    花呗二维码收款怎么开通(支付宝怎么开花呗二维码收款)

  • 华为手机关闭高清通话(华为手机关闭高清通话无法接听电话)

    华为手机关闭高清通话(华为手机关闭高清通话无法接听电话)

  • ipx2防水能防什么程度(防水ipx2 ipx4)

    ipx2防水能防什么程度(防水ipx2 ipx4)

  • iphone7过热屏幕变暗(iphone7发热屏幕失灵)

    iphone7过热屏幕变暗(iphone7发热屏幕失灵)

  • 双面插数据线叫什么(双面插数据线叫什么名字)

    双面插数据线叫什么(双面插数据线叫什么名字)

  • 怎么找回删除的软件(怎么找回删除的手机短信)

    怎么找回删除的软件(怎么找回删除的手机短信)

  • 戴尔电脑怎么分盘win10(戴尔电脑怎么分区硬盘分区)

    戴尔电脑怎么分盘win10(戴尔电脑怎么分区硬盘分区)

  • 快手复制链接怎么上传(快手复制链接怎么打开)

    快手复制链接怎么上传(快手复制链接怎么打开)

  • airpods零售店能刻字吗(零售店买的airpods可以退货吗)

    airpods零售店能刻字吗(零售店买的airpods可以退货吗)

  • qq可能感兴趣怎么关闭(qq可能感兴趣怎么关)

    qq可能感兴趣怎么关闭(qq可能感兴趣怎么关)

  • iphonexs双卡吗(苹果xs双卡吗?)

    iphonexs双卡吗(苹果xs双卡吗?)

  • 什么是DNS?Win11/10上的DNS问题解决方法汇总(什么是馥芮白)

    什么是DNS?Win11/10上的DNS问题解决方法汇总(什么是馥芮白)

  • 小规模结转增值税会计科目有哪些
  • 工程款税率是多少专票
  • 工程施工是资产还是负债
  • 累计减税费用是什么意思
  • 援企稳岗补贴的申请理由
  • 人身保险和意外保险是一个东西吗
  • 会计核算制度的案例
  • 农产品增值税抵扣新政策2021
  • 交汇算清缴所得吗
  • 企业的季度所得税怎么算
  • 企业所得税以前年度亏损怎么弥补
  • 运输公司购买运输车辆保险进什么科目
  • 查土地补贴到啥单位查明
  • 上海、浙江 12万以上个税申报可以用支付宝啦
  • 金融公司一般有哪些业务
  • 季初从业人数和季末从业人数怎么填
  • 汇算清缴所得税账务处理
  • 多提税金的具体分录
  • 营业成本主要包括
  • 分支机构的季度所得税务报表是填合并报表吗
  • 外地项目不预缴税款
  • 工程用的叉车计提折旧记到什么科目?
  • 企业分红需要缴纳什么税
  • 苹果微信语音怎么调成喇叭
  • 空头支票怎么办
  • 汇算清缴期业务包括哪些
  • 飞机电子普通发票6%税率可以抵扣吗
  • 银行多收的开户费怎么办
  • 调制解调器报告了一个错误怎么弄
  • vue blob下载文件
  • node -v
  • 房产税的计税依据的形式包括
  • 深入解析wordpress
  • 前端这点事
  • php反射使用场景
  • 分配利润的会计处理
  • d3.js下载
  • 报销差旅费属于什么现金流量项目
  • 应收账款抵借的例题
  • 财务报表季报利润表本月金额怎么填
  • php单例模式优点
  • sql报数字溢出
  • 织梦网站怎么添加关键词
  • python中变量类型有几种
  • 在MysQL数据库中,数据库文件的扩展包括
  • java怎么用mysql
  • 财产清查两种制度
  • 可供出售金融资产新准则叫什么
  • 个体户定额征收后还要报税吗
  • 单位未足额缴纳社保怎么赔偿
  • 利润表主营业务收入怎么算
  • 资源税代扣代缴取消时间
  • 理财到期的会计怎么做账
  • 公司怎么样能开发票
  • 土地无形资产摊销的会计处理方法
  • 员工出差的费用怎么算
  • 为什么设置辅警
  • 应收会计怎么做
  • 核定征收的小微企业
  • 总账会计工作流程表
  • sql server数据库怎么导出
  • SQL Server 作业同步 (结合备份作业)
  • SQL Select语句完整的执行顺序
  • mac系统的控制面板在哪
  • explore.exe进程占用cpu99%
  • win10键盘大小写不能切换了
  • cocos creator rpg
  • js 位置
  • jquery搜索页面内容
  • shell的case语法
  • javascript数据类型有哪些
  • 在javascript中逻辑运算符包括
  • Python中模块和包的区别
  • android局部界面切换
  • ActivityManagerService (二)
  • 留抵税额如何抵扣
  • 晋城兰花集团招聘
  • 福建社保官方网站
  • 国税局登录密码修改
  • 交医保显示已申报怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设