javascript - 使用在父级中导入的 <component>

标签 javascript vue.js vue-component

我正在构建一个管理其他组件的组件。 它根据 propsinputs 在特定位置动态渲染组件,就像协调器一样。

用例

我的协调器有以下占位符,例如网格(p1 ... p6):

|-p1-|-p2-|-p3-|
|-p4-|-p5-|-p6-|

在给定时刻,它将组件 C1 渲染为 p2,将 C2 渲染为 p6:

|-p1-|-C1-|-p3-|
|-p4-|-p5-|-C2-|

在另一个时刻,它用 C3 替换了 C1:

|-p1-|-C3-|-p3-|
|-p4-|-p5-|-C2-|

问题

鉴于这种动态,我无法(据我所知)使用插槽。因此,我将 component 标签与 :is 属性一起使用,以便动态渲染正确的组件。问题是,为了使 :is 工作,我必须在我的 Orchestrator/manager 组件中定义该组件。我想将其分开以供重用,在那里导入组件是没有意义的。一种解决方案是 globally register组件。如果可能的话我想避免这种情况。有办法吗?我对你可能认为的任何类型的反射魔法持开放态度 n_n'

最佳答案

您可以通过这样的 prop 传递组件:

Orchestrator.vue

<component :is="comp"/>
export default {
  props: ['comp']
}

Test.vue

<orchestrator :comp="MyComponent"/>
import Orchestrator from './orchestrator.vue'
import MyComponent from './my-component.vue'

export default {
  components: {
    Orchestrator,
  },

  data() {
    return {
      MyComponent,
    };
  },
}

关于javascript - 使用在父级中导入的 <component>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54993057/

相关文章:

javascript - 无法将焦点设置在 Primereact 中的 Dropdown 组件上

javascript - 存储选项下拉列表中的状态,以便将其传递给父组件

vue.js - 存储值更改但不影响组件中的计算属性

javascript - 如何在 vue.js 2 上使用 ajax 上传图片?

javascript - promise 解决哪些状态码

javascript - 解决最小化关键请求深度 - 页面性能

javascript - 访问 &lt;input inputnum ="1"/> 中的 inputnum

javascript - 在 Cypress 中的转译 Vue 组件中加载 CSS 样式表

javascript - vue-google-maps - 如何设置 map 样式?

vue.js - 在 VueJs 的对象中添加新属性时如何触发更改?