javascript - Vue.js:动态获取注册组件

标签 javascript vue.js

Here's a jsBin showing my scenario

我有一个选择器<component :is="selectedComponent"></component> ,以及 <select v-model="currentComponent">...</select>这允许我选择显示哪一个。

目前我正在维护一个单独的组件列表,如下所示:

var componentList = [
  { name: 'Component A', id: 'component-a' },
  { name: 'Component B', id: 'component-b' }
]; 

该列表被输入 select元素的<option>带有 id 的项目作为值,并且 name如正文所示。

这不是很干燥,因为我需要用每个新组件维护这个列表。我想以更优雅的方式抽象组件列表。

我尝试在应用程序中执行以下操作:

var vm = Vue.extend({
  components: {
    'component-a': ComponentA,
    // etc.
  }
  computed: {
    componentList: function() {
      // map this.$options.components or something else?
    }
  }
});

但我一事无成。有小费吗?最佳实践?

谢谢!

最佳答案

我在当前的项目中做了类似的事情,我将所有组件都放在一个名为“components”的文件夹中,在该文件夹中,有一个导出所有组件的 index.js 文件,如下所示:

export component1 from './component1.vue'
export component2 from './component2.vue'

...等等

在我的 vue 组件中,我将它们全部导入,如下所示:

import * as components from '../components'

var vm = new Vue({
  components: components,
  computed: {
    componentsList() {
       return Object.keys(components)
    }
  }
})

关于javascript - Vue.js:动态获取注册组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37331676/

相关文章:

javascript - vue中可以用函数的返回来定义div的样式吗?

javascript - 通过编程导航 Vue.js 传递 Prop

javascript - Laravel VueJS - 找不到元素 : #navigation

javascript - 谷歌地图上的指向标记@change

javascript - 带返回值的多个嵌套 axios 调用

java - Java 的 Rhino 实现实现了哪个 JavaScript (ECMAScript) 版本(更新策略是什么?)

javascript - 可编辑的 Div 边框样式

javascript - 如何在客户端解码 JWT token 负载?

php - iPhone强制下载文件?

vue.js - Vue 3 为什么子数据更改时父级会更新?