前言
最近在做的实训项目是vue项目,所以自然而然也用到了VueRouter。在开始的时候,自己对 route 这两者其实并不了解,后来看了网上的文章也懂了一些。
$router
router对象是全局路由的实例,是router构造方法的实例。
1、router-link本质是向history栈中添加一个路由,当我们点击浏览器的返回按钮时可以看到之前的页面。
1、push方法其实和<router-link :to="...">是等同的。
2、this.$router.go(-1) 页面路由的后退。
3、this.$router.replace() push方法会向 history 栈添加一个新的记录,而replace方法是替换当前的页面,不会向 history 栈添加一个新的记录。
$route
$route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。
1、$route.path字符串,对应当前路由的路径,总是解析为绝对路径。
2、$route.paramskey/value 对象,包含了 动态片段 和 全匹配片段,如果没有路由参数,就是一个空对象。
3、$route.querykey/value 对象,表示 URL 查询参数。如果没有查询参数,则是个空对象。
4、$route.name当前路径名字,如果没有使用具名路径,则名字为空。
5、$route.matched数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
params和query的区别
1、params参数在地址栏中不会显示,query会显示。
2、query相当于get请求 params相当于post请求。
3、query传参通过path跳转,params传参通过name跳转,分别是用this.props.match.query.name和this.props.match.params.name来接收。
4、params一旦设置在路由,就是路由的一部分,如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。
5、query是拼接在url后面的参数,没有也没关系。
6、params、query不设置也可以传参,params不设置的时候,刷新页面或者返回参数会丢失。
来源:CSDN