从vue2到vue3的改变
vue2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| import VueRouter from 'vue-router';
Vue.use(VueRouter);
let router = new VueRouter({ mode: 'history', routes: [ { path: "/login", name: "Login", component: () => import("../views/Login/index.vue") }, ] }); export default router;
import router from "./router";
new Vue({ el: '#app', router: router, render: c => c(App), })
|
vue3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| import { createRouter,createWebHistory } from "vue-router"; const routes = [ { path: "/", redirect: "login" }, { path: "/login", name: "Login", component: () => import("../views/Login/index.vue") }, ]; const router = createRouter({ history: createWebHistory() routes });
export default router;
import router from "./router";
createApp(App) .use(router)
|
Router和Route
vue-router中$router
和$route
的区别
- $router: 代表的是路由器对象,包含一些实现路由跳转的方法
- $route: 代表的是当前路由对象,包含一些路由相关的属性
vue3中引入的useRoute
,useRouter
相当于vue2的 this.$route()
,this.$router()
1 2 3 4 5 6
| import { useRoute, useRouter } from "vue-router";
const route = useRoute(); const router = useRouter();
router.push({ name: "login", params: { data: "ok" } });
|
函数里调用router.push()跳转路由
1 2 3
| router.push('/Console'); router.push({ name: "Console"}); router.push({ path: "/console"});
|
- params传参:URL参数是不可见的,刷新后参数会消失
- 不配置path,刷新后页面参数会消失
- 配置path,url参数可见,刷新页面id会保留
1
| router.push({ name: "login", params: { data: "ok" } });
|
1 2 3 4 5 6 7
| { path: "/console:id", name: "Console", component: () => import("../views/Console/index.vue") },
|
1
| router.push({ name: "login", query: { data: "ok" } });
|