vue-router

作者: 天空之翼 | 来源:发表于2020-06-16 10:36 被阅读0次

传递参数

const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}

const router = new VueRouter({
  routes: [
    // dynamic segments start with a colon
    { path: '/user/:id', component: User }
  ]
})
router path $ route.params
/ user /:用户名 /user/evan { username: 'evan' }
/ user /:用户名/ post /:post_id / user / evan / post / 123 { username: 'evan', post_id: '123' }
const User = {
  template: '...',
  watch: {
    $route(to, from) {
      // react to route changes...
    }
  }
}

传参中的props

const User = {
  props: ['id'],
  template: '<div>User {{ id }}</div>'
}
const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User, props: true },

    // for routes with named views, you have to define the `props` option for each named view:
    {
      path: '/user/:id',
      components: { default: User, sidebar: Sidebar },
      props: { default: true, sidebar: false }
    }
  ]
})

嵌套路径

const router = new VueRouter({
  routes: [
    { path: '/user/:id', component: User,
      children: [
        {
          // UserProfile will be rendered inside User's <router-view>
          // when /user/:id/profile is matched
          path: 'profile',
          component: UserProfile
        },
        {
          // UserPosts will be rendered inside User's <router-view>
          // when /user/:id/posts is matched
          path: 'posts',
          component: UserPosts
        }
      ]
    }
  ]
})

路由跳转

<router-link :to="...">
router.push('home')

// object
router.push({ path: 'home' })

// named route
router.push({ name: 'user', params: { userId: '123' } })

// with query, resulting in /register?plan=private
router.push({ path: 'register', query: { plan: 'private' } })
router.replace(location, onComplete?, onAbort?)

表现类似router.push,区别是不产生新的history,而是替换当前的地址。

routes: [
    { path: '/a', redirect: { name: 'foo' }}
  ]
routes: [
    { path: '/a', redirect: '/b' }
  ]

历史记录跳转

router.go(n)
router.go(1)

// go back by one record, the same as history.back()
router.go(-1)

// go forward by 3 records
router.go(3)

// fails silently if there aren't that many records.
router.go(-100)
router.go(100)

相关文章

网友评论

    本文标题:vue-router

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