How to add dynamic components/partials in Vue.js

后端 未结 2 1150
时光说笑
时光说笑 2021-02-06 04:17

I need to add child components dynamically to a component based on user interaction. I looked to some old issue but it seems like a dirty hack to me, besides, it is an old issue

相关标签:
2条回答
  • 2021-02-06 04:46

    Hope this helps someone in future : There are numerous methods of doing this , below is one way of doing this :

    1. If component is already defined , simply adding a new instance of component importantly using parent keyword to define parent of component instance as below : check codepen

    var Child = Vue.extend({
        template: '<div>Hello!</div>',
    });
    
    new Vue({
      el: '#demo',
      ready: function() {
        var child = new Child({
            el: this.$el.querySelector('.child-host'),
            parent: this,
        });
      },
    });
    
    0 讨论(0)
  • 2021-02-06 04:53

    You want to put the custom components there right from the start, and use v-if or v-for to show, hide, add, or subtract these components. You let the data drive the DOM, not managing the DOM yourself. Fiddle example: https://jsfiddle.net/f5n5z5oo/2/

    You can even make the components dynamically change what type of component they are using is:

    data: {
      elements: [
        { type: 'component-a' },
        { type: 'component-b' }
      ]
    }
    <div v-for="element in elements" :is="element.type"></div>
    

    If you're more specific about your use case I will try to help further!

    0 讨论(0)
提交回复
热议问题