Passing props dynamically to dynamic component in VueJS Passing props dynamically to dynamic component in VueJS vue.js vue.js

Passing props dynamically to dynamic component in VueJS


To pass props dynamically, you can add the v-bind directive to your dynamic component and pass an object containing your prop names and values:

So your dynamic component would look like this:

<component :is="currentComponent" v-bind="currentProperties"></component>

And in your Vue instance, currentProperties can change based on the current component:

data: function () {  return {    currentComponent: 'myComponent',  }},computed: {  currentProperties: function() {    if (this.currentComponent === 'myComponent') {      return { foo: 'bar' }    }  }}   

So now, when the currentComponent is myComponent, it will have a foo property equal to 'bar'. And when it isn't, no properties will be passed.


You can also do without computed property and inline the object.

<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>

Shown in the docs on V-Bind - https://vuejs.org/v2/api/#v-bind


You could build it like...

comp: { component: 'ComponentName', props: { square: true, outlined: true, dense: true }, model: 'form.bar' }     
<component :is="comp.component" v-bind="{...comp.props}" v-model="comp.model"/>