如何将数据传递给vue router router-view?
How to pass data to vue router router-view?
我正在使用 Vue 路由器。在我的代码中,我曾经有:
<div v-bind:is="page.component_name" v-bind:page="page"></div>
有效,并且 page
数据已传递到组件。但是我如何对路由器视图做同样的事情呢?这似乎不起作用:
<router-view v-bind:page="page"></router-view>
js:
var vm = new Vue({
...,
router : new VueRouter({
routes : [
{ path: '/foo', component: { template: '<div>foo</div>', created:function(){alert(1);} } },
//{ path: '/bar', component: { template: '<div>bar</div>', created:function(){alert(2);} } },
{ path: '/bar', component: Vue.component("ti-page-report") }
]
}),
...
});
vue-router
在文档中有专门的页面介绍如何将道具传递给 router-view
。
Passing Props to Route Components
来自文档的示例片段:
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User, props: true },
// for routes with named views, you have to define the `props` option for each named view:
{
path: '/user/:id',
components: { default: User, sidebar: Sidebar },
props: { default: true, sidebar: false }
}
]
})
如果您正在寻找简化的用法,props
仍然可以像传递给任何组件一样传递。但是用于渲染路由的组件(在路由定义中指定的组件)应该期望接收道具。
这是将 props
传递给 router-view
的简单用法示例:
需要访问正在发送的道具的组件("ti-page-report")只需添加它:
<template>
<div>
<h1>Now you can access page: {{ page }}</h1>
</div>
</template>
export default {
name: "TiPageReport",
props: ['page'], // can now be accessed with this.page
...
};
请参阅https://vuejs.org/v2/guide/components-props.html了解如何正确使用道具。
我个人决定使用 provide/inject 功能:以最小的开销保持反应性。
我正在使用 Vue 路由器。在我的代码中,我曾经有:
<div v-bind:is="page.component_name" v-bind:page="page"></div>
有效,并且 page
数据已传递到组件。但是我如何对路由器视图做同样的事情呢?这似乎不起作用:
<router-view v-bind:page="page"></router-view>
js:
var vm = new Vue({
...,
router : new VueRouter({
routes : [
{ path: '/foo', component: { template: '<div>foo</div>', created:function(){alert(1);} } },
//{ path: '/bar', component: { template: '<div>bar</div>', created:function(){alert(2);} } },
{ path: '/bar', component: Vue.component("ti-page-report") }
]
}),
...
});
vue-router
在文档中有专门的页面介绍如何将道具传递给 router-view
。
Passing Props to Route Components
来自文档的示例片段:
const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User, props: true },
// for routes with named views, you have to define the `props` option for each named view:
{
path: '/user/:id',
components: { default: User, sidebar: Sidebar },
props: { default: true, sidebar: false }
}
]
})
如果您正在寻找简化的用法,props
仍然可以像传递给任何组件一样传递。但是用于渲染路由的组件(在路由定义中指定的组件)应该期望接收道具。
这是将 props
传递给 router-view
的简单用法示例:
需要访问正在发送的道具的组件("ti-page-report")只需添加它:
<template>
<div>
<h1>Now you can access page: {{ page }}</h1>
</div>
</template>
export default {
name: "TiPageReport",
props: ['page'], // can now be accessed with this.page
...
};
请参阅https://vuejs.org/v2/guide/components-props.html了解如何正确使用道具。
我个人决定使用 provide/inject 功能:以最小的开销保持反应性。