// 字符串this.$router.push('/index')// 对象this.$router.push({path:'/index'})// 带查询参数,变成/backend/order?selected=2/,query传参this.$router.push({path:'/index', query:{name:'123'}})// 命名的路由 params传参this.$router.push({name:'index', params:{name:'123'}})
// 声明式<reouter-link:to="..." replace></router-link>// 编程式: router.replace(...)// push方法也可以传replacethis.$router.push({path:'/homo', 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,/router?id=456, 这里的id 叫做 query
query 传递配置的时path,而params传递配置的是name,在params中配置path无效
query在路由配置不需要设置参数,而params必须设置
query传递的参数会显示在地址栏中
params传递刷新会无效,但是query会保存传递过来的值,刷新不变;
路由的配置
query:{ path:'/home', name: Home, component: Home} params:{ path:'/home/:site/:bu', name: Home, component: Home}
如果路由上面不写参数,也是可以传递过去的,但不会再URL上面显示出你的参数,并且当你跳转到别的页面或者刷新页面的时候参数会丢失,那依赖这个参数http请求或者其他操作就会失败
created(){let self=this self.getParams()},watch(){'$router':'getParams'}, methods:{getParams(){let site=this.$route.query.sitelet bu=this.$route.query.bu// 如果是params传参,那就是this.$router.params.site}}
**注意:获取路由上面的参数,用的是$route,后面没有 r **
路由传递参数和传统传递参数是一样的,命名路由类似表单提交而查询就是URL传递: