vue父子组件同步数据,vue如何在组件内部实现一个双向数据绑定

  vue父子组件同步数据,vue如何在组件内部实现一个双向数据绑定

  组件之间的数值传递经常在Vue项目中使用。实现方式有很多种,但原理基本相同。本文将介绍Vue父子组件数据单向绑定和Vue父子组件数据双向绑定的对比,从而认识双向绑定。

  :

目录

   1.父子组件1的单向值传输。从父母到子女的价值转移

  2.从子代到父代的价值转移2。父子组件数据的双向绑定实现思路:

  父 向 子 组件传值:使用道具属性。(props是property[ property]的复数缩写)子 向 父 组件传值:使用自定义事件。

  

一、父子组件单向传值

  

1、父向子传值

  将该值传递给父子组件。子组件收到数据后,会将其保存到自己的变量中。

  //父组件写入

  cld :numP=num /cld

  //子组件定义和数据

  组件:{

  cld:{

  模板:“#child”,

  道具:{

  numP:数字

  },

  }

  }

  //子组件内容

  模板id=子级

  差异

  {{ numP }}

  /div

  /模板

  Props用于接收父组件传递的值。写道具的方法有很多,比如:

  //模式1:直接接收数据

  道具:[ numP ]

  //模式二:添加类型限制。

  道具:[

  numP:数字

  ]

  //模式3:添加默认值

  道具:[

  numP: {

  类型:数量,

  默认值:0

  }

  ]

  //模式四:有必要限制数值吗?

  道具:[

  numP: {

  类型:数量,

  默认值:0,

  Require:true //添加必需的值。如果没有传递该值,将会报告一个错误。

  }

  ]

  //方式五:采取对象的形式

  道具:{

  numP: {

  类型:数量,

  默认值:0,

  }

  }

  

2、子向父传值

  向子父组件传递值主要是通过自定义事件。具体例子如下:

  //父组件内容

  差异

  子组件获取的数据{{getNum}}

  CLD:num= num @ accept= getNumC /CLD

  /div

  //父组件方法

  方法:{

  getNumC(数据){

  This.getNum=data //接收子组件传输的数据

  }

  },

  //子组件定义

  组件:{

  cld:{

  模板:“#child”,

  data(){

  返回{

  NumC:1314 //子组件数据定义

  }

  },

  已安装(){

  这个。$ emit (accept ,this . numc)//触发自定义事件

  }

  }

  },

  

二、父子组件数据双向绑定

  vue的数据是单向流动的,Vue中从来没有任何双向绑定。v-model实现的双向绑定只是语法糖。

  方式1:使用watch在父组件和子组件之间进行双向数据绑定,具体实例如下:

  div id=应用程序

  Br{{num}}

  输入类型=text v-model=numbr

  CLD:num= num @ accept= getNumC /CLD

  /div

  //子组件内容

  模板id=子级

  差异

  Br{{childNum}}

  输入类型=text v-model=childNum /

  /div

  /模板

  !-亲子组件通信-

  const app=new Vue({

  埃尔: #app ,

  数据:{

  数字:“520”,

  },

  方法:{

  getNumC(数据){

  this.num=数据

  }

  },

  组件:{

  cld:{

  模板:“#child”,

  道具:{

  数字:字符串

  },

  data(){

  返回{

  childNum:0,

  }

  },

  观察:{

  number:function(){

  this . child num=this . num

  },

  childNum:function(){

  这个。$emit(accept ,this.childNum)

  }

  },

  已安装(){

  this . child num=this . num

  }

  }

  }

  })

  方式2:.同步修改器实现双向绑定

  提供的函数。vue1.x中的sync修改器。当子组件用。同步,更改也将同步到父组件中绑定的值。这很方便,但也会带来问题,因为它破坏了单向数据流。(数据自上而下流动,事件自下而上)

  CLD:num . sync= num /CLD

  //将扩展到:

  CLD:number= bar @ update:number=" val=bar=val "/

  当一个组件需要更新num的值时,它需要触发一个更新事件:

  这个。$ emit( update:number ,new value);

  使用具体实例如下:

  //父组件

  父亲:foo . sync= foo /父亲

  //子组件

  道具:[foo],

  data() {

  返回{

  new foo:this . foo;

  }

  },

  方法:{

  add:function(){

  this.newMsg=10

  这个。$emit(update:foo ,this . new foo);

  }

  }

  关于前端框架Vue父子组件数据双向绑定的这篇文章到此为止。关于Vue父子组件数据双向绑定的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: