想问一下有关路由刷新的问题

来源:3-3 嵌套路由

mylovef

2017-06-29

页面使用vue-router在跳转时发的参数有用来给下一个页面请求数据用的。通过params传递数据的,在进入页面后再次刷新,参数就消失了。类似https://cnodejs.org/topic/5934004e7e057cea7ceb98b5这样的问题

但把参数写到 query 里,从 url 层面携带参数,这样刷新就能获取到,问题能得到解决

但我还是有疑问,为什么把参数放到params就有问题,而放在query里面就没有问题呢,这里params和query携带参数机理有什么不同?

如果通过params传参,怎么样能够使页面刷新之后不消失params值?这里能通过localstorage解决这个问题吗?或者是使用钩子函数

谢谢老师


写回答

1回答

河畔一角

2017-06-30

你这个问题问的非常好,说明你看的非常仔细和用心。

这个地方有两个概念,需要跟你解释一下:

第一个:动态路由。所为的动态路由,就是地址后面的参数不是固定的,如下图

//szimg.mukewang.com/595620c500016e4107600274.jpg

通过这种方式定义的路由,称之为动态路由,我们访问的时候是这样的:

/user/123

123这个地方是动态的,这种动态路由的 :id  我们也称之为参数,获取的方式如下:

this.$route.params.id

切记:必须通过$route.params来获取动态路由的参数。

第二个概念:请求地址参数

当我们访问一个请求地址的时候,可能需要给下一个页面传递参数。

1.通过代码的形式传参

this.$router.push({
     path:'/test',
     query:{
        userId:123
     }
})

2.通过router-link传参

<router-link :to="{path:'/test',query:{userId:123}}">跳转</router-link>

3.直接把参数加载地址后面

this.$router.push({

    path:'/test?userId=123'

});

获取参数的方法:

this.$route.query.userId

这种传参的形式是请求地址传参


这个问题,你问的很好,主要是你混淆了这两种参数的概念。

如果是动态路由的参数,是通过params获取的,页面刷新也能取到。

如果是请求地址传递的参数,必须通过query获取,页面刷新也不会丢失。

以上文章,我相信我分析之后,你能够非常的明白是为什么。

10
1
mylovef
非常感谢!
2017-06-30
共1条回复

Vue2.6+Node.js+MongoDB 全栈打造商城系统

课程全面升级,Vue2.6+Koa2,从前端入门全栈,让你的未来更宽广

2634 学习 · 924 问题

查看课程