Vue 3,组合 Api 'reactive' 上的双向数据绑定无法正常工作

Vue 3, Composition Api two way data binding on 'reactive' not working correctly

我是 vue 3 的新手,正在尝试绑定两个数据,但无法正常工作。我做了 setup() 并创建了 reactive 数据。通过 v-model 将其绑定到 children。然后将更新后的数据 $emit 返回给 parent。但是 parent 的 reactive 数据未应用到保存命令上的代码 re-run。

parent 脚本:

    export default defineComponent({
      setup(){
        const activeCard = reactive({id:null, travelType:null})
        return {activeCard}
      },
    })

parent 模板:

    <pin-card v-for="(pinCard, idx) in categoryPinCards"
              :key="idx"
              v-model="activeCard"
              :pinCard="pinCard"></pin-card>

child 脚本

    export default defineComponent({
      props:{
        modelValue:Object,
      },
      methods:{
        makePinActive(id:number, travelType:null) {
          this.$emit("update:modelValue", {id: id, travelType: travelType})
        },
      }
    })

我按照步骤操作了,但是,缺少什么?

似乎 reactive 道具不能被 v-model 在 Vue 3 中使用(而 ref 没有这个问题)。

解决方法是为 update:modelValue 事件添加处理程序,Object.assigns 新值:

<pin-card
    v-for="(pinCard, idx) in categoryPinCards"
    :key="idx"
    :modelValue="activeCard" 
    @update:modelValue="setActiveCard($event)" 
    :pinCard="pinCard"
></pin-card>
export default {
  setup() {
    return {
      //...
      setActiveCard(eventData) {
        Object.assign(activeCard, eventData)
      }
    }
  }
}

demo