【发布时间】:2020-04-11 06:52:35
【问题描述】:
Vue 中是否可以根据路由参数的值动态使用组件?
这是我正在尝试做的一个示例:
path: '/model/:modelName',
components: {
default: ModelDefinition.models.find((model) => model.key === $route.params.modelName),
},
问题是:$route 在此处不可用。 modelName 也不是。
如果default 也可以是一个函数(类似于props)会更好:
path: '/model/:modelName',
components: {
default: (modelName) => (ModelDefinition.models.find((model) => model.key === $route.params.modelName)),
},
这个函数实际上被我惊讶地调用了,但参数似乎是某种函数,当然不是我希望的模型名称。
我需要这个的原因是:这条路线实际上有更多的配置,为各种事情指定了很多组件和值。如果我必须为每个模型指定它,这将是冗长且重复的,并且必须针对我们添加到系统中的每个模型进行扩展。
【问题讨论】:
-
如何使用
beforeEnter导航守卫(或全局导航守卫)进行路由重定向? -
这似乎更多地用于重定向到其他路径,例如登录,而不是决定哪个组件需要在哪里呈现。或者你有这样使用它的例子吗?
-
好吧,考虑到it's not yet created when the guard is called.因此,在
next回调中传递“目标”路由可能会对您的情况有所帮助。
标签: vue.js vue-router