配置好路由了,问题都在上一篇error里面了,以后study主要写知识点了
路由跳转的方式:
1.声明式导航:router-link(必须要有to)
2.编程式导航:利用组件实例$router.push|replace方法
(声明式导航可以的,编程式导航也可以,编程式导航还可以书写自己的业务,在业务完成后再跳转)
路由传参:
params参数:属于路径中的一部分,配置路由时需要占位
query参数:不属于路径中的一部分,类似于ajax中的queryString,不需要占位
路由传参
Q1:路由传递参数(对象写法)path是否可以结合params参数一起使用?
A1:不可以,对象的写法可以是name和path,path不可以和params一起使用。
Q2:如何指定params参数可传不可传?
A2:如果不传递,路径会出现问题,想要可传可不传,在占位后面加上问号 ?
Q3:params参数可传可不传,如果传递的为空,如何解决?
A3:路径会出现问题,用undefind解决:params:{keyword:''||undefind}
Q4:路由组件能否传递props数据
A4:可以。
1.布尔值写法:props:true (params)
2.对象写法:props:{}
3.函数写法:props:($route)=>{}
编程式跳转参数不变,会出现NavigationDuplicated警告错误
声明式导航没有是因为router底层处理好了,编程式导航是因为有promise
解决办法:1.给push方法传递成功与失败的回调函数(不会提示,但治标不治本)
2.重写push方法,检查有无成功与失败的回调函数,如果有就没事,没有就给加上qi