动态解析Vue组件名称

时间:2018-09-22 10:32:45

标签: vue.js vue-component

我正在寻找一种“即时”解析Vue(sfc)组件名称的方法。基本上,我从后端获取某种组件名称,并且需要将它们转换为前端的真实组件名称。像这样:

<text/> => /components/TextElement.vue

<component v-bind:is="text"></component> => => /components/TextElement.vue

这个想法是提供一个将后端名称映射到前端名称的全局函数。我不想在使用这些组件的每个地方都这样做,所以也许有一种挂钩可以动态更改名称?

非常感谢, 鲍里斯

1 个答案:

答案 0 :(得分:0)

您可以创建一个包装器<component>,该包装器动态映射组件名称和globally registers指定的组件。

  1. prop的{​​{1}}属性创建一个带有<component>(例如,名为“ xIs”)的组件:

    is
  2. 添加包装<script> export default { props: { xIs: { type: String, required: true } }, }; </script> 的模板和包含映射的组件名称(从后端名称到前端名称)的<component>属性(例如,名为“ translatedName”): / p>

    data
  3. <template> <component :is="translatedName" /> </template> <script> export default { data() { return { translatedName: '' } } }; </script> 上添加一个watcher,它将通过prop值中指示的名称注册组件:

    prop