哈哈 v-model 传递参数给子组件

最近再敲vue3的一些东西,这边需要在子组件改变props中的值,从而关闭el-dialog 【当然还一种不完善的也可以关闭el-dialog 在子组件在设置一个变量isShow 当然首先需要将show的值传给isShow,然后通过isShow来控制el-dialog的开关和关闭,也不需要什么v-model和sync 】,之前就听说vue是单向数据流 不能这样操作;但 神奇的人类们 发现sync 和 v-model这俩玩意;但在vue3 中这个sync似乎不起作用了 可能是我的姿势错了;

不多bb

<!-- father.vue --> 
<AddRole v-model:show='addButton' @closeDialog ='addButton = false'></AddRole>

<script>
setup(){
 const addButton = ref(false)
}
</script>

//son.vue
<el-dialog title="新增" v-model="show" width='30%' :close-on-click-modal='false' :show-close='false'>
  <el-button type="primary" @click="handleAdd">确 定</el-button>
</el-dialog>
 
<script>
export default{
  name:"AddRole",
  props:{
    show:{
      type: Boolean,
      default: false
    }
    
  },
emits:['closeDialog','update:show'], //不搞这玩意会出警告,但我这边确实不知道原理,纯api使用者 这里的show就是传过来的那个show 可能吧
setup(props,{emit}){
 const handleAdd = ()=>{
  emit('update:show',!props.show)//由于更改props.value会出警告 说什么 readonly 似乎是设置了props传过来的值 只读无法更改 也变相说明了vue的单向数据流,这边传值就传个定值就好;
}
}
  
  
}
</script>
原文地址:https://www.cnblogs.com/diligent-noob/p/14609625.html