You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3中如何实现组件props与自身本地数据的双向绑定?

解决方案

Vue3中实现这种父子组件状态同步的常用方案是结合 prop监听+自定义事件 ,或者直接用Vue3内置的v-model参数语法实现双向绑定,避免父子状态不一致导致的触发失效问题。


方案1:选项式API写法(适配你当前的代码结构)

子组件 ModalComponent.vue 修改如下:
<template>
   <div v-if="showModal">
      ...
      <button @click="handleClose">内部关闭模态框</button>
   </div>
</template>

<script>
export default {
  props: {
    show: {
      type: Boolean,
      default: false
    },
  },
  data() {
    return {
      showModal: false,
    }
  },
  watch: {
    // 监听父组件传入的show值变化,同步到本地状态
    show(newVal) {
      this.showModal = newVal
    },
    // 本地状态变化时同步给父组件
    showModal(newVal) {
      this.$emit('update:show', newVal)
    }
  },
  methods: {
    handleClose() {
      this.showModal = false
    }
  }
}
</script>
父组件绑定方式修改为v-model:show:
<template>
  <button @click="showChild = !showChild">点击打开模态框</button>
  <ModalComponent v-model:show="showChild" />
</template>

<script>
import ModalComponent from './ModalComponent.vue'
export default {
  components: {ModalComponent},
  data() {
    return {
      showChild: false,    
    }
  }
}
</script>

方案2:

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 15:00:01