<template>
<div>
<!-- Parent component -->
<component :is="dynamicComponent" :prop1="value1" :prop2="value2" />
</div>
</template>
<script>
import DynamicComponentA from '@/components/DynamicComponentA.vue';
import DynamicComponentB from '@/components/DynamicComponentB.vue';
export default {
data() {
return {
dynamicComponent: 'DynamicComponentA', // Set the default dynamic component
value1: 'PropValue1',
value2: 'PropValue2',
};
},
watch: {
dynamicComponent(newComponent) {
// Update props when the dynamic component changes
if (newComponent === 'DynamicComponentA') {
this.value1 = 'NewPropValue1A';
this.value2 = 'NewPropValue2A';
} else if (newComponent === 'DynamicComponentB') {
this.value1 = 'NewPropValue1B';
this.value2 = 'NewPropValue2B';
}
},
},
components: {
DynamicComponentA,
DynamicComponentB,
},
};
</script>
<!-- DynamicComponentA.vue -->
<template>
<div>
<!-- DynamicComponentA template -->
<p>{{ prop1 }}</p>
<p>{{ prop2 }}</p>
</div>
</template>
<script>
export default {
props: {
prop1: {
type: String,
required: true,
},
prop2: {
type: String,
required: true,
},
},
};
</script>
<!-- DynamicComponentB.vue -->
<template>
<div>
<!-- DynamicComponentB template -->
<p>{{ prop1 }}</p>
<p>{{ prop2 }}</p>
</div>
</template>
<script>
export default {
props: {
prop1: {
type: String,
required: true,
},
prop2: {
type: String,
required: true,
},
},
};
</script>