我正在寻找一种“即时”解析Vue(sfc)组件名称的方法。基本上,我从后端获取某种组件名称,并且需要将它们转换为前端的真实组件名称。像这样:
<text/> => /components/TextElement.vue
或
<component v-bind:is="text"></component> => => /components/TextElement.vue
这个想法是提供一个将后端名称映射到前端名称的全局函数。我不想在使用这些组件的每个地方都这样做,所以也许有一种挂钩可以动态更改名称?
非常感谢, 鲍里斯
答案 0 :(得分:0)
您可以创建一个包装器<component>
,该包装器动态映射组件名称和globally registers指定的组件。
为prop
的{{1}}属性创建一个带有<component>
(例如,名为“ xIs”)的组件:
is
添加包装<script>
export default {
props: {
xIs: {
type: String,
required: true
}
},
};
</script>
的模板和包含映射的组件名称(从后端名称到前端名称)的<component>
属性(例如,名为“ translatedName”): / p>
data
在<template>
<component :is="translatedName" />
</template>
<script>
export default {
data() {
return {
translatedName: ''
}
}
};
</script>
上添加一个watcher,它将通过prop
值中指示的名称注册组件:
prop