Vue路由编程式导航有2种方式:
①、router.push(location, onComplete?, onAbort?)
②、router.replace(location, onComplete?, onAbort?)
区别:push会向 history 添加新记录,replace不会向 history 添加新记录。下述使用push方式记录 name,path,传参得到的结果
一、push(location)参数为字符串
1、location参数内容为路由的name值
html内定义一个btn
push参数为路由的name值
浏览器运行结果 -- 跳转成功到user
2、location参数内容为路由的path值
push参数为路由的path值
浏览器运行结果 -- 跳转成功到user
3、location参数内容为为任意的字符串(没有在路由中定义的字符串)
bar字符串并不在routes中
浏览器运行结果 --结果跳转成功,没有报错,path有值
二、push(location)参数为对象类型
1、使用name和params组合
浏览器测试结果 -- 导航参数传递了过来
注意:此情况下刷新浏览器,params参数会丢失
2、使用name和query组合
浏览器测试结果 -- 导航参数通过拼接在url后面传递过来
注意:跟在url后面的参数,刷新浏览器依旧保留
3、使用path和params组合
浏览器测试结果 -- path和params使用,params会被忽略
注意:Vue Router官网解释:如果提供了 path,params 会被忽略。
4、使用path和query组合
浏览器测试结果 -- path和query使用,参数接在url后面
注意:跟在url后面的参数,刷新浏览器依旧保留
三、命名路由
routes内使用动态路由配置,push()方法内容params对象必须有一个名称和routes内的path动态参数名称一致。如上id
浏览器测试结果 -- 路由/:id的值为动,this.$route的params的值存在
注意:命名路由的最后一个值为动态的,且刷新浏览器params参数有值。
适合使用在页面跳转带参数,但是又不想跟在url?后面时使用
四、跳转页面接参方式
1、代码写法
2、html写法