router.push(location)

在vue.js中想要跳转到不同的 URL,须要应用 router.push 办法。

这个办法会向 history 栈增加一个新的记录,当用户点击浏览器后退按钮时,则回到之前的 URL。

当你点击

<router-link> 

时,这个办法会在外部调用,所以说,点击

<router-link :to="..."> 

等同于调用

router.push(...) 

申明式

<router-link :to="..."> 

编程式:router.push(...)//该办法的参数能够是一个字符串门路,或者一个形容地址的对象。

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

router.replace(location)

设置 replace 属性(默认值: false)的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。即便点击返回按钮也不会回到这个页面。

加上replace: true后,它不会向 history 增加新记录,而是跟它的办法名一样 —— 替换掉以后的 history 记录。
//申明式:<router-link :to="..." replace></router-link>// 编程式:router.replace(...)//push办法也能够传replacethis.$router.push({path: '/home', replace: true})

传参两种形式

应用query:

this.$router.push({ path: '/home', query: { site: [], bu: []}}) 

应用params:

this.$router.push({  name: 'Home',  // 路由的名称  params: {    site: [],    bu: []}}) 

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params

query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。

两者都能够传递参数,区别是什么?

  1. query 传参配置的是path,而params传参配置的是name,在params中配置path有效
  2. query在路由配置不须要设置参数,而params必须设置
  3. query传递的参数会显示在地址栏中
  4. params传参刷新会有效,然而query会保留传递过去的值,刷新不变 ;

5.路由配置:

query 的写法

{path: '/home',name: Home,component: Home} 

params写法:

{path: '/home/:site/:bu',name: Home,component: Home}
如果路由下面不写参数,也是能够传过来的,但不会在url下面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会失落,那依赖这个参数的http申请或者其余操作就会失败

6,获取路由参数

在接管的跳转的页面

created () {let self = thisself.getParams()},watch () {'$route': 'getParams'},methods: {  getParams () {  let site = this.$route.query.site  let bu = this.$route.query.bu  // 如果是params 传参,那就是this.$route.params.site  下面就能够获取到传递的参数了 }}
留神:获取路由下面的参数,用的是$route,前面没有r

params是路由的一部分,必须要有。query是拼接在url前面的参数,没有也没关系。

params一旦设置在路由,params就是路由的一部分,如果这个路由有params传参,然而在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

params、query不设置也能够传参,然而params不设置的时候,刷新页面或者返回参数会失落,query并不会呈现这种状况,这一点的在下面说过了

最初总结:

路由传递参数和传统传递参数是一样的,命名路由相似表单提交而查问就是url传递,在vue我的项目中基本上把握了这两种传递参数就能应酬大部分利用了,最初总结为以下:

1.命名路由搭配params,刷新页面参数会失落

2.查问参数搭配query,刷新页面数据不会失落

3.承受参数应用this.$router前面就是搭配路由的名称就能获取到参数的值