是的,你可以在动态组件中使用props ,只是你需要在html属性中使用小写连字符(kebab case)名称,即.
<component v-if="component" :is="component" @value-updated="onUpdate"></component>
Vue.component('foo', {
template: `
<div>
<button @click="$emit('value-updated', { bar: 'baz' })">pass data</button
</div>
`
});
new Vue({
el: '#app',
data: {
currentComponent: 'foo',
output: {},
},
methods: {
onUpdate (payload) {
this.output = payload
}
}
})
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<div id="app">
<component v-if="currentComponent" :is="currentComponent" @value-updated="onUpdate"></component>
<pre>{{ output }}</pre>
</div>