
我有一个父组件 A ,父组件里面的子组件 B 直接显示在父组件的 template 里面上:
A.vue:
<template> ... ... <b/> </template> import B from B.vue setup(){ components: {B} } 在路由里面,是这么写的:
{ path: "/A_path", name: "A", components: { header: Header, main: A, }, children: [{ path: "B_path/:id", component: B, },], }, 可以看到,在 B 的路由里面,有一个参数 id
但问题是,我的 B 直接在 A 组件下面显示了,那么这个 id 是怎样才能传递进去呢?
1 learnshare 2021-11-05 20:21:59 +08:00 |
2 movq OP @learnshare this.$route.params.id 是在 B 组件里面获取 B 组件接受到的 id 这个参数。 我的问题是,如果 B 组件直接在 A 组件里面显示,这种显示方法并没有使用路由跳转,那么 B 组件里面的 this.$route.params.id 是怎么传进去的呢?还是说这种情况没有这个参数? |
3 learnshare 2021-11-05 20:28:02 +08:00 @movq v3 >通过注入路由器,我们可以在任何组件内通过 this.$router 访问路由器,也可以通过 this.$route 访问当前路由: v4 >通过调用 app.use(router),我们可以在任意组件中以 this.$router 的形式访问它,并且以 this.$route 的形式访问当前路由: this.$route 代表的是当前路由( URL 路径),与哪个组件没有关系。只要组件已经渲染(显示)在页面中,就可以访问它 |
4 learnshare 2021-11-05 20:31:12 +08:00 |
5 gouflv 2021-11-05 22:44:42 +08:00 via iPhone 父子组件和路由没有半毛钱关系 |
6 gouflv 2021-11-05 22:47:42 +08:00 via iPhone |
7 lin07hui 2021-11-05 23:25:14 +08:00 var app = new Vue({...}) app 里全部组件的 this.$router 都是同一个对象 |
8 neutrino 2021-11-06 01:15:50 +08:00 via Android 穿不进去的,你的 URL 里没有 B 只有 A ,也就没有 id |
9 gadfly3173 2021-11-06 03:15:50 +08:00 https://router.vuejs.org/zh/guide/essentials/passing-props.html#%E5%B8%83%E5%B0%94%E6%A8%A1%E5%BC%8F 声明 param 为 prop ,这样你就可以把它当成 prop 传进去了 |
10 IvanLi127 2021-11-06 09:52:12 +08:00 via Android 给 <b /> 外面包个 <route-view> </route-view> ? |
11 94 2021-11-06 09:58:34 +08:00 组件 A: <template> </template> |
12 94 2021-11-06 10:01:25 +08:00 // 组件 A: <template> // 前后内容 <router-view></router-view> </template> // router.js { path: "/A_path", name: "A", children: [ { path: "B_path/:id", component: B, }, ], }, 其实就是组件套路由容器,让 router-view 做显示,就是正常的路由思路。 |
13 tuutoo 2021-11-08 08:54:21 +08:00 via Android 直接在 B 组件里添加一个属性 prop, 从父组件传过去吧 |