在Vue3中,可以使用v-model来实现父子组件之间的双向绑定和通信。

在父组件中,可以使用v-model来绑定一个值,并将这个值传递给子组件。例如:

<template>
  <div>
    <ChildComponent v-model="childValue" />
    <p>父组件的值:{{ childValue }}</p>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      childValue: ''
    };
  }
};
</script>

在子组件中,可以通过props接收父组件传递过来的值,并通过emits事件将修改后的值发送给父组件。例如:

<template>
  <div>
    <input type="text" :value="value" @input="updateValue($event.target.value)" />
  </div>
</template>

<script>
export default {
  props: {
    value: {
      type: String,
      required: true
    }
  },
  emits: ['update:modelValue'],
  methods: {
    updateValue(value) {
      this.$emit('update:modelValue', value);
    }
  }
};
</script>

这样,当子组件中的input的值发生变化时,会通过updateValue方法将新的值发送给父组件,父组件的childValue也会随之更新。同时,父组件中的childValue的变化也会传递给子组件,子组件中的input的值会随之更新。

注意,在子组件中,使用emits来声明可以触发的事件名称,这里使用了update:modelValue,这是Vue3中v-model默认的事件名称

vue3中v-model父子组件通信

原文地址: https://www.cveoy.top/t/topic/ihJp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录