编程式导航-路由跳转&传参
基本跳转
问题:点击按钮跳转如何实现
编程式导航:用 js 代码来进行跳转
两种语法:
path
路径跳转(更建议方便)
1 2 3 4 5
| this.$router.push('路由路径');
this.$router.push({ path: '路由路径', });
|
name
命名路由跳转(适合path
路径长的场景)
1 2 3
| this.$router.push({ name: '路由名', });
|
1 2 3 4 5 6 7
| const router = new VueRouter({ routes: [ { name: '路由名', path: '/path/xxx', component: xxx }, ], });
|
实例
按钮绑定点击事件
1
| <button v-on:click="goSearch">搜索一下</button>
|
1 2 3 4 5 6 7 8 9 10
| methods: { goSearch() { this.$router.push({ name: 'search' }); }, },
|
用第二种方式,命名路由跳转方式需要在路由模块中给路由规则命名
1 2 3 4 5 6 7 8
| routes: [ { path: '/', redirect: '/home' }, { path: '/home', component: Home }, { name: 'search', path: '/search/:words?', component: Search }, { path: '*', component: NotFound }, ],
|
路由传参
问题:点击搜索按钮,跳转需要传参,如何实现
两种传参方式:查询参数&动态路由传参
上面的两种跳转方式,对于这两种传参方式都支持
path 路径跳转传参
- query 传参
1 2 3 4 5 6 7 8 9
| this.$router.push('/路径?参数名1=值1&参数名2=值2');
this.$router.push({ path: '/路径', query: { 参数名1: '值1', 参数名2: '值2', }, });
|
例:输入框用v-model
指令绑定到inpValue
,将其作为参数拼接到路径后
1 2 3 4 5 6 7 8 9 10 11
| data() { return { inpValue: '', }; }, methods: { goSearch() { this.$router.push(`/search?key=${this.inpValue}`); }, },
|
目标组件获取参数使用$route.query.参数名
获取
- 动态路由传参
1 2 3 4
| this.$router.push('/路径/参数值'); this.$router.push({ path: '/路径/参数值', });
|
例:
1 2 3 4 5 6
| methods: { goSearch() { this.$router.push(`/search/${this.inpValue}`); }, },
|
获取参数使用$route.params.words
获取
name 命名路由跳转传参
- query 传参
1 2 3 4 5 6 7
| this.$router.push({ name: '路由名', query: { 参数名1: 值1, 参数名2: 值2, }, });
|
获取参数使用$route.query.参数名
获取
- 动态路由传参
1 2 3 4 5 6 7
| this.$router.push({ name: '路由名', params: { 参数名1: 值1, 参数名2: 值2, }, });
|
获取参数使用$route.params.参数名
获取