vue

vue3.0中的路由及路由守卫

2020-12-14  本文已影响0人  焚心123
<router-link to="/">首页</router-link>
<router-view></router-view>//要在哪里显示路由页面,就在哪里进行标签的书写
import { createRouter, createWebHashHistory } from "vue-router";
const routes = [
          {
              path:"/",
              name:"home",
              component:()=>import("../views/home.vue")
          }
        ]
const router = createRouter({
  history: createWebHashHistory(),
  routes
});
export default router;
//在main.js中进行引入,并进行挂载注册到全局上
    const routes = [
        {
            path:'/home/:id',//这个id就是我们要使用params进行动态传递的参数
            name:home,
            component:Home
        }
    ]
    //! 在我们的页面中直接进行写就可以了
    <router-link to="/home/111">点击跳转到home页面并传参</router-link>
    //接受的时候
    vue2.0中this.$route.params.id
    vue3.0中import { useRoute } from 'vue-router'
    const route = useRoute()
    console.log(route.params.id);//111
    <router-link to="/test?id=999">test</router-link>
    //接受的时候
    vue2.0中this.$route.query.id
    vue3.0中import { useRoute } from 'vue-router'
    const route = useRoute()
    console.log(route.query.id);//999
    vue3.0中import { useRouter } from 'vue-router'
    const route = useRouter()
        // ! query编程式导航传参
            route.push({
                path:"/lianxi",
                query:{
                    id:666
                }
            });
            //! params编程式导航传参
            route.push({
                name:'lianxi',
                params:{
                    id:666
                }
            });
            接受参数的方法跟上面的一样
    vue3.0中import { useRoute } from 'vue-router'
    const route = useRoute()
    console.log(route.query.id);//999
就像vue2.0中的this.$router.push()和this.$route.query.id等是不是很像呢
<router-link to="/home" replace></router-link>

route.push({
    path:"/home",
    replace:true
})
<router-view name="LeftSidebar"></router-view>
<router-view></router-view>
<router-view name="RightSidebar"></router-view>
//在路由的设置js文件中进行配置下
 const route = [
     {
         path:"/home",
         name:"home",
         components:{
             default:Home,//默认显示home页面
             LeftSidebar:LeftSidebar,//显示左侧页面
             RightSidebar//显示右侧页面
         }
     }
 ]
    route = [
        {
            path:"/",
            redirect:"/home"//重定向
        },
        {
            path:"/test",
            name:"test",
            component:Test,
            alias:"/aa",//别名使用时直接使用aa就可以了
            alias:["/aa","/cc"],//此时用哪个都可以,这是多个别名
        }
    ]
    <router-link to="/aa"></router-link>
    //在路由配置的组件中,我们进行配置
    const routes = [
        {
            path:"/aa/:id",
            name:"aa",
            component:Aa,
            props:true//要加这个
        }
    ]
    //在页面中
    <router-link to= "/aa/666">点击跳转并传参</router-link>
    //在aa的页面中
    props:['id'],
    <template>
        {{id}}//直接就能获取到我们传递过来的参数
    </template>
    const routes = [
        {
            path:"/use/:id",
            name:"use",
            components:{
                default:Use,
                slide:Slide,
                rightSlide
            },
            props:{
                default:true,
                slide:false,
                rightSlide:false
            }
        }
    ]
    const routes = [
        {
            path:"/home",
            name:"home",
            component:Home,
            beforeEnter:(to,from) =>{
                //to是当用户点击进入当前页面的时候,我们可以进行一些拦截设置
                //from当来自其他页面进入当前页面的时候,我们也可以进行拦截提示用户
                alert('我是路由独享守卫!!!')
            }
        }
    ]
import { onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router';
        onBeforeRouteUpdate((to,from)=>{//当前组件路由改变后,进行触发
            console.log(to);
        })
        onBeforeRouteLeave((to,from)=>{//离开当前的组件,触发
            alert('我离开啦')
        })
// todo 这是新添加的路由页面,如果有重复的属性,会先删除前面的,添加后面的路由页面
router.addRoute({
  path:"/router",
  name:"router",
  component:()=>import('../views/router.vue')
})
// 1 添加子路由,第一个参数是父路由的name名,后面是子路由的数据
router.addRoute({ name: 'admin', path: '/admin', component: Admin })//1 父路由
router.addRoute('admin', { path: 'settings', component: AdminSettings })//1 子路由
// * 如果上面添加的路由页面没有变化,那么就添加这行代码
router.replace(router.currentRoute.value.fullPath)//替换当前路由页面的路由
router.removeRoute('router');
上一篇 下一篇

猜你喜欢

热点阅读