父子组件间传参的一个高级写法,和传统的组件间通信有些不一样。上代码
<script>
const app = Vue.createApp({
data() {
return {
conut:1
}
},
template:`
<div>
<dome v-model="conut" />
</div>
`
});
app.component('dome',{
props:['modelValue'],
methods:{
handleAdd(){
this.$emit('update:modelValue',this.modelValue += 3)
}
},
template:`
<div @click="handleAdd">
{{ modelValue }}
</div>
`
})
解释:通过v-model来进行父子间的传参,子组件接受,定义的名字必须是modelValue 这是一个固定的写法,相应的我们再handleAdd事件中通过 this. e m i t 映 射 到 方 法 必 须 是 u p d a t e : m o d e l V a l u e 。 这 种 写 法 就 省 去 了 在 子 组 件 上 面 的 接 受 参 数 的 步 骤 父 子 组 件 通 过 事 件 传 递 可 以 直 接 方 便 的 通 过 t h i s . emit 映射到方法必须是 update:modelValue。 这种写法就省去了在子组件上面的接受参数的步骤 父子组件通过事件传递可以直接方便的通过this. emit映射到方法必须是update:modelValue。这种写法就省去了在子组件上面的接受参数的步骤父子组件通过事件传递可以直接方便的通过this.emit的方式传递 不用在methods中定义方法