Vue Router
2021-11-08 14:49:29 1 举报
AI智能生成
Vue Router学习脉络,请收藏,持续更新
作者其他创作
大纲/内容
参考资料
中文官方文档
英文官方文档
参数传递与接收
参考资料
vue-router query和params传参(接收参数)$router $route的区别
query传参
刷新不会消失
传参
this.$router.push({<br> path:'/xxx',<br> query:{<br> id:id<br> }<br> })<br>
接收参数
this.$route.query.id
params传参
刷新参数消失
传参
this.$router.push({<br> name:'xxx',<br> params:{<br> id:id<br> }<br> })<br>
接收参数
this.$route.params.id
Vue3页面跳转变化<br>- 没变谢谢!!!
参考资料
vue3如何使用vue-router
Vue官方文档 - 入门
login.vue
<template><br> <p>index</p><br> <button @click="toHome">toHome</button><br></template><br><script><br>import { useRouter } from 'vue-router'<br>export default {<br> setup () {<br> const router = useRouter()<br> const toHome = (() => {<br> router.push({<br> name: 'home'<br> })<br> })<br> return {<br> toHome<br> }<br> },<br>}<br></script><br><style scoped><br></style>
说明
通过在main.js中使用 app.use(router),<br>我们可以在任意组件中以 this.$router 的形式访问它,<br>并且以 this.$route 的形式访问当前路由:
注意
this.$router 与直接使用通过 createRouter <br>创建的 router 实例完全相同。<br><br>我们使用 this.$router 的原因是,<br>我们不想在每个需要操作路由的组件中都导入路由。
使用
this.$router.push('/dashboard')
传参参照上面,一样的
注意
<font color="#c41230">传参是this.$router,接收参数是this.$route,这里千万要看清了!!!</font>
动态路由<br>
参考资料
Vue router 正则表达式限制路由传参
官方文档 - 动态路由匹配
定义
动态路由以冒号开始
示例
const routes = [<br> // 动态字段以冒号开始<br> { path: '/users/:id', component: User },<br>]
捕获动态路由
使用this.$route.params.变量名<br>(冒号后面的名字)来进行访问
动态路由<br>的正则匹配
参考资料
官方文档 - 路由的匹配语法<br>
动态路由的<br>基本区分方式
const routes = [<br> // 匹配 /o/3549<br> { path: '/o/:orderId' },<br> // 匹配 /p/books<br> { path: '/p/:productName' },<br>]
动态路由的<br>正则区分方式
const routes = [<br> // /:orderId -> 仅匹配数字<br> { path: '/:orderId(\\d+)' },<br> // /:productName -> 匹配其他任何内容<br> { path: '/:productName' },<br>]
注意
确保转义反斜杠( \ ),就像我们对 \d (变成\\d)所做的那样,<br>在 JavaScript 中实际传递字符串中的反斜杠字符。
下载
npm
npm install vue-router
yarn
yarn add vue-router
开始
改写App.vue
<template><br> <div id="app"><br> <router-view></router-view><br> </div><br></template>
Vue2
在src下创建router目录添加index.js
import Vue from "vue";<br>import VueRouter from "vue-router";<br><br>Vue.use(VueRouter);<br><br>const routes = [<br> {<br> path: "/",<br> name: "login",<br> component: () => import("../components/Login")<br> },<br> {<br> path: "/home",<br> name: "home",<br> component: () => import("../views/Home")<br> }<br>];<br><br>const router = new VueRouter({<br> mode: "history",<br> base: process.env.BASE_URL,<br> routes<br>});<br><br>export default router;
在src/main.js里面配置router
添加第一行,头部导入
import router from "./router";<br>
添加第二行
new Vue({<br> <font color="#f15a23">router,</font><br> render: h => h(App)<br>}).$mount("#app");
Vue3
参考资料
中文官网 - 入门
vue3如何使用vue-router
在src下创建router目录添加index.js
import { createRouter,createWebHashHistory} from "vue-router";<br><br>const routes = [<br> {<br> path: "/",<br> name: "login",<br> component: () => import("../components/Login")<br> },<br> {<br> path: "/home",<br> name: "home",<br> component: () => import("../views/Home")<br> }<br>];<br><br>const router = createRouter({<br> history: createWebHashHistory(),<br> routes: routes<br>})<br><br>export default router<br>
在src/main.js里面配置router
改写
createApp(App).mount('#app')<br>-><br>const app = createApp()<br>app.mount('#app')<br>
添加第一行,头部导入
import router from "./router";<br>
添加一行
app.use(router)
监听页面刷新
vue监听页面的刷新状态
跳转同一页面参数更新
参考
VueRouter 中' this.$router.push '跳转页面不刷新的问题解决
vue中页面路由this.route.push跳转页面不刷新
解决vue Avoided redundant navigation to current location
新窗口打开链接
参考资料
Vue在新窗口打开页面的方法
VUE项目 打开新的页面窗口
vue打开新html,vue在新窗口打开页面的方法
打开其他网站链接
js
window.open(url, '_blank');
历史模式 -<br>刷新404
参考资料
不同的历史模式
单页应用刷新后如何避免404?
不同你是模式
使用hash模式,不使用history模式
一个页面<br>多个router-view<br>与router-link
参考资料
router-link和router-view
在一个页面里我们有2个以上router-view
0 条评论
下一页