vue父子组件之间双向数据绑定的三种方式(vue2/vue3) | 您所在的位置:网站首页 › v-model:value=value › vue父子组件之间双向数据绑定的三种方式(vue2/vue3) |
在做项目的过程中,经常遇到父子组件通信的问题,现在对3种通信方式总结一下: 一、prop向下传递,emit向上传递初始版本 父组件通过prop将数据传递给子组件,子组件通过emit事件将子组件数据传递给父组件 vue3允许写多个v-model,vue2不允许写多个v-model //父组件 // 等价于 默认给子组件传递两个值value1、value2 // 子组件更新函数update:value1将接受到的参数赋值给dValue1 // 子组件更新函数update:value2将接受到的参数赋值给dValue2 data() { return { dValue1: '父组件的数据1', dValue2: '父组件的数据2' } } 三、sync修饰符(v2.3.0+ 新增) // 父组件 我是父子组件之间同步的数据{{data}} data(){ return { data:'我是来自父组件的数据' } } //子组件 props:{ data:{ default:'', type:String } }, data(){ return { childData:this.data //关联父组件的值 } }, watch:{ data(){ this.childData = this.data } }, methods:{ childDataChange(v){ this.$emit('update:data',v) // 触发update:data将子组件值传递给父组件 } }vue3取消了.sync这种语法,使用v-model:title 语法代替 // 父组件 我是父子组件之间同步的数据{{data}} // 父组件传递给子组件title属性(默认使用value) // 通过update:title(默认使用update:value) 方法将子组件传递的值赋值给data data(){ return { data:'我是来自父组件的数据' } } //子组件 {{title}} props:{ title:{ default:'', type:String } }, methods:{ childDataChange(v){ this.$emit('update:title',v) // 触发update:data将子组件值传递给父组件 } } |
CopyRight 2018-2019 实验室设备网 版权所有 |