this.$router.push、replace、go的区别

1.this.$router.push()

描述:跳转到不同的url,但这个方法会向history栈添加一个记录,点击后退会返回到上一个页面。

用法:

  this.$router.push('/index')
  this.$router.push({path:'/index'})
  this.$router.push({path:'/index',query:{name: '123'}})
  this.$router.push({name:'index',params:{name:'123'}})
 // 字符串

  router.push('home')
  // 对象
  this.$router.push({path: '/login?url=' + this.$route.path});
  // 带查询参数,变成/backend/order?selected=2
  this.$router.push({path: '/backend/order', query: {selected: "2"}});
  // 命名的路由
  router.push({ name: 'user', params: { userId: 123 }})

  

2.this.$router.replace()

描述:同样是跳转到指定的url,但是这个方法不会向history里面添加新的记录,点击返回,会跳转到上上一个页面。上一个记录是不存在的。

3.this.$router.go(n)

相对于当前页面向前或向后跳转多少个页面,类似 window.history.go(n)。n可为正数可为负数。正数返回上一个页面

 //声明式:
  <router-link :to="..." replace></router-link>
  // 编程式:
  router.replace(...)
  //push方法也可以传replace
  this.$router.push({path: '/home', replace: true})