Vuejs:数据通过router-view

Vuejs: data through the router-view

通过 router-view 传递数据是个好习惯吗?我有一个嵌套路由器,一些 children 必须能够访问 parent 拥有的数据。我知道 Vuex 是在整个应用程序中传递数据的方式,但我想知道将数据绑定到 router-view 以使其在 child 组件中可用的确切缺点是什么。 所以现在我有这样的东西:

<router-view v-bind:list="array" />

您可以使用 router-view 将数据传递给呈现的组件,但很可能不是您想要的。

路由可以从应用程序的任何部分发生,但如果您通过 router-view 传递信息,则需要更新绑定到视图的数据,这反过来意味着可以访问包含的组件呈现 router-view 的模板。这最终会紧密耦合组件或使用 bus/vuex.

您可以使用 Vuex 来传递信息,但是在路由时传递信息的方法要简单得多。

你可以定义你的路由来转换路由到组件的道具时设置的参数。更多信息 here。这意味着您可以进行类似于此的调用:

<router-link :to="{ name: 'routeName', params: { id: 1 }}">Go to route</router-link>

然后为 routeName 注册的任何组件都会将属性 id 设置为值 1。如果您以编程方式触发导航,也会发生同样的情况。

您可以像下面这样以编程方式通过路由器 在点击或重定向时从父组件触发 fn 下面

this.$router.push({
      name: 'ChildRouteName',
      params: {'type':'name', 'id': '1',}
})

并且在子组件中接收这样的参数

type = this.$route.params['type']
id = this.$route.params['id']