美文网首页
vue-router

vue-router

作者: 忘记_3a6a | 来源:发表于2020-04-30 15:42 被阅读0次
    • 路由配置
    import Vue from 'vue'
    import Router from 'vue-router'
    import Frame from '@/views/layout/frame'
    
    Vue.use(Router)
        //路由
    const routes = [{
            path: '/main',
            name: 'main',
            component: Frame,
            children: [
                // {
                //     path: '/user/detail',
                //     name: 'user_detail',
                //    redirect: '/main/:username'  //重定向
                //     component: () =>
                //         import ('@/components/user/Detail.vue')
                // },
                {
                    path: '/user/info',
                    name: 'user_info',
                    component: require('@/views/user/user-info.vue').default
                }
            ],
        },
        {
            path: '/login',
            name: 'login',
            component: require('@/views/login.vue').default
        }
    
    ];
    
    
    //使用路由
    const router = new Router({
        mode: 'history', //去除路由路径#号
        routes
    })
    
    //导出路由
    export default router;
    
    • 使用
    <template>
      <div id="app">
        <router-link to="/">首页</router-link>
        <router-link to="/content">内容</router-link>
        <router-view></router-view>
      </div>
    </template>
    
    // 使用 vue-router 路由到指定页面,该方式称之为编程式导航
                this.$router.push("/main");
    

    参数传递

    • :id 这样的占位符
    {path: '/user/profile/:id', name:'UserProfile', component: UserProfile}
    
    • router-link
    <router-link :to="{name: 'UserProfile', params: {id: 1}}">个人信息</router-link>
    
    • 代码方式
    this.$router.push({ name: 'UserProfile', params: {id: 1}});
    

    props接收

    • 设置props为true
    {path: '/user/profile/:id', name:'UserProfile', component: UserProfile, props: true}
    
    • 接收方
      export default {
        props: ['id'],
        name: "UserProfile"
      }
    

    路由中的钩子函数

    • beforeRouteEnter:在进入路由前执行
    • beforeRouteLeave:在离开路由前执行
     export default {
        props: ['id'],
        name: "UserProfile",
        beforeRouteEnter: (to, from, next) => {
          console.log("准备进入个人信息页");
           // 注意,一定要在 next 中请求,因为该方法调用时 Vue 实例还没有创建,此时无法获取到 this 对象,在这里使用官方提供的回调函数拿到当前实例
          next(vm => {
    //异步请求获取数据
            vm.getData();
          });
        },
        beforeRouteLeave: (to, from, next) => {
          console.log("准备离开个人信息页");
          next();
        }
      }
    
    • to:路由将要跳转的路径信息
    • from:路径跳转前的路径信息
    • next:路由的控制参数
      • next() 跳入下一个页面
      • next('/path') 改变路由的跳转方向,使其跳到另一个路由
      • next(false)返回原来的页面
      • next((vm)=>{})仅在 beforeRouteEnter 中可用,vm 是组件实例

    相关文章

      网友评论

          本文标题:vue-router

          本文链接:https://www.haomeiwen.com/subject/twnzwhtx.html