1:声明式导航:router-link(务必要带有to属性),可以实现路由的跳转
2:编程式导航:利用的是组件实例的$router.push | replace方法,可以实现路由的跳转。(还可以写一些自己的业务)
1:params参数:属于路径当中的一部分,需要注意,在配置路由的时候,需要占位
2:query参数:不属于路径当中的一部分,类似于ajax中的queryString /home?k=v&kv=,不需要占位
设置一个接收参数是为了能在回调函数中使用并传到search页面。
在回调函数内使用编程式导航,携带params和query参数,使用对象传递法(常用)。
**若要传递params参数,对象内的属性不能是path而应是name,**所以需要在router那设置Search组件路由跳转的name。
对象法传参:
this.$router.push({
name:'search',
params:{keyword:this.keyword},
query:{k:this.keyword.toUpperCase()}
})
另外两种不常用的方法
测试结果
成功传参啦!
否,params参数只能与name一起使用.
在配置路由时,在占位的后面加上一个问号[params可以传递或者不传递]
使用undefined解决
可以,三种方式
1:布尔值写法:params
在router中配置props:true
在search组件中配置props参数
测试
2:对象写法:额外的给路由组件传递一些props
3:函数写法:可以params参数,query参数,通过props传递给路由组件(常用)