Vue router 路由嵌套 路由重定向 路由别名 router-link传参数

<template>
    <div>
      这是商品列表页面
      <router-link :to="{ name: 'title'}">标题</router-link>
      <router-link to="/goods/image">图片</router-link>
      <keep-alive>
        <router-view/>
      </keep-alive>
    </div>
</template>

<script>
export default {
  name: 'GoodsList',
  data () {
    return {
    }
  },
  beforeRouteEnter (to, from, next) {
    // 在渲染该组件的对应路由被 confirm 前调用
    // 不!能!获取组件实例 `this`
    // 因为当守卫执行前,组件实例还没被创建
    next(vm => {
      // 通过 `vm` 访问组件实例
      // console.log(vm)
    })
  },
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
    // this.name = to.params.name
    next()
  },
  beforeRouteLeave (to, from, next) {
    // 导航离开该组件的对应路由时调用
    // 可以访问组件实例 `this`
    // const answer = window.confirm('Do you really want to leave? you have unsaved changes!')
    // if (answer) {
    //   next()
    // } else {
    //   next(false)
    // }
    next()
  }
}
</script>

<style scoped>

</style>
import Vue from 'vue'
import Router from 'vue-router'
const GoodsList = () => import(/* webpackChunkName: "group-main" */'@/views/GoodsList')
const Title = () => import(/* webpackChunkName: "group-main" */'@/views/Title')
const Image = () => import(/* webpackChunkName: "group-main" */'@/views/Image')

Vue.use(Router)

const routes = [
  {
    path: '/',
    name: 'index',
    // 重定向
    redirect: 'goods',
    //别名 怎么都可以访问到
    alias: '*'
  },
  {
    path: '/goods',
    name: 'GoodsList',
    redirect: '/goods/title',
    // 重定向
    component: GoodsList,
    beforeEnter: (to, from, next) => {
      next()
    },
    // 路由嵌套
    children: [
      {// 不要写成/title 就成了绝对路径了 访问不到
        path: 'title',
        name: 'title',
        component: Title,
        beforeEnter: (to, from, next) => {
          next()
        }
      },
      {// 不要写成/title 就成了绝对路径了 访问不到
        path: 'image',
        name: 'image',
        component: Image,
        beforeEnter: (to, from, next) => {
          next()
        }
      }
    ]
  }
]

let router = new Router({
  mode: 'hash',
  routes: routes
})

router.beforeEach((from, to, next) => {
  // console.log(from)
  // console.log(to)
  next()
})
router.afterEach((from, to) => {
  // console.log(from)
  // console.log(to)
})

export default router

猜你喜欢

转载自blog.csdn.net/weixin_41111068/article/details/84454045