1:路由传递参数(对象写法)path是否可以结合params参数一起使用?
2:如何指定params参数可传不可传?
3:params参数可以传递也可以不传递,但是如果传递的是空串,如何解决?
4:路由组件能不能传递props数据?
路由传递参数(对象写法)path是否可以结合params参数一起使用?
答:路由跳转传参的时候,对象的写法可以是name、path形式,但是需要注意的是,path这种写法不能与params参数一起使用
this.$router.push({path: '/search', params: {keyword: this.keyword}, query: {k: this.keyword.toUpperCase()}})
如何指定params参数可传不可传?
答:如果路由要求传递params参数,但是你就不传递params参数,发现一件事情,URL会有问题 。比如:配置路由的时候,占位了(params参数),但是路由跳转的时候就不传递。 路径会出现问题.。
http://localhost:8080/#/?k=QWE
http://localhost:8080/#/search?k=QWE
如何指定params参数可以传递、或者不传递,在配置路由的时候,在占位的后面加上一个问号params可以传递或者不传递。
, {
path: "/search/:keyword?",
component: Search,
meta: {show: true},
name: "search",
},
params参数可以传递也可以不传递,但是如果传递的是空串,如何解决?
答:使用undefined解决:params参数可以传递、不传递(空的字符串)
this.$router.push({name: 'search', params: {keyword: '' || undefined}, query: {k: this.keyword.toUpperCase()}})
路由组件能不能传递props数据?
答:可以的:三种写法
this.$router.push({
name: "search",
params: {keyword: this.keyword},
query: {k: this.keyword.toUpperCase()}
});
1. 布尔值写法:params
在组件中要定义props参数。
注意,只能传递props,并且是params参数
<script>
export default {
name: '',
// 路由组件可以传递props
props: ['keyword']
}
</script>
, {
path: "/search/:keyword?",
component: Search,
meta: {show: true},
name: "search",
// 路由组件能不能传递props数据?
// 1.布尔值写法:params
props: true
},
2.对象写法:额外的给路由组件传递一些props
<script>
export default {
name: '',
// 路由组件可以传递props
props: ['keyword', 'a', 'b']
}
</script>
, {
path: "/search/:keyword?",
component: Search,
meta: {show: true},
name: "search",
// 路由组件能不能传递props数据?
// 2.对象写法:额外的给路由组件传递一些props
props: {a: 1, b: 2}
},
3.函数写法:可以params参数,query参数,通过props传递给路由组件
, {
path: "/search/:keyword?",
component: Search,
meta: {show: true},
name: "search",
// 路由组件能不能传递props数据?
// 3.函数写法:可以params参数,query参数,通过props传递给路由组件
props: ($route) => ({keyword: $route.params.keyword, k: $route.query.k})
},