vue父子组件和兄弟组件通信问题,vue 父组件触发子组件事件

  vue父子组件和兄弟组件通信问题,vue 父组件触发子组件事件

  组件是Vue的核心功能之一。合理的组件化可以减少我们代码的冗余,提高项目的可维护性。下面文章主要介绍Vue中亲子组件的通信和事件触发的相关信息。有需要的可以参考一下。

  

目录

   I .组件子组件父组件II。亲子组件通信。父组件与子组件通信。子组件与父组件III通信。父子组件事件触发父组件调用子组件中的事件方法。子组件调用父组件IV中的事件方法。摘要

  

一、组件

  

子组件

  模板

  div style=border:1px纯黑;宽度:400px高度:130像素;

  H3我是子组件/h3

  按钮子组件将值传递给父组件/按钮。

  div组件接收父组件的值:/div

  /div

  /模板

  

父组件

  模板

  div style=border:1px纯红;填充:2rem宽度:400px边距:0自动;

  H3我是父组件/h3

  div组件传递给父组件的值:/div

  孩子/孩子

  /div

  /模板

  脚本

  从导入子级。/Child ;

  导出默认值{

  组件:{

  儿童

  }

  }

  /脚本

  效果显示:

  从这个图中,我们可以看到父子组件的结构。我们来练习一下亲子组件交流。

  

二、父子组件通信

  

父组件给子组件通信

  实现思路:子组件通过props接受父组件传递的值。

  在父组件中,定义一个数据变量,并将该值动态绑定到子组件标签中。

  //Father.vue

  模板

  div style=border:1px纯红;填充:2rem宽度:400px边距:0自动;

  H3我是父组件/h3

  div组件传递给父组件的值:{{ChildMsg}}/div

  Child :FatherMsg=data/Child

  /div

  /模板

  脚本

  从导入子级。/Child ;

  导出默认值{

  data() {

  返回{

  数据:“我是你爸爸”,

  }

  },

  组件:{

  儿童

  }

  }

  /script然后通过子组件中的props接收,以便组件接收父组件传递的值。

  //Child.vue

  模板

  div style=border:1px纯黑;宽度:400px高度:130像素;

  H3我是子组件/h3

  按钮子组件将值传递给父组件/按钮。

  div组件传递给子组件的值:{{FatherMsg}}/div

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  数据:“我是你的孩子”,

  }

  },

  道具:[FatherMsg]

  }

  /脚本

  可以看到,我们的父组件与子组件之间的通信已经实现,接下来就是子组件与子组件之间的通信了。这个会用这个。$emit方法。

  

子组件向父组件通信

  实现思路:用这个。$emit在子组件中触发自定义事件并传递值,然后在父组件中侦听事件。

  将click事件添加到子组件中的button按钮,以通过此自定义事件。$emit,并传入一个参数:

  模板

  div style=border:1px纯黑;宽度:400px高度:130像素;

  H3我是子组件/h3

  Button @click=send 子组件将值传递给父组件/button

  div组件传递给子组件的值:{{FatherMsg}}/div

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  数据:“我是你的孩子”,

  }

  },

  道具:[FatherMsg],

  方法:{

  send() {

  这个。$emit(ListenChild ,this . data);

  }

  }

  }

  /script在父组件的子组件标签中,首先在数据中定义一个变量来接收该值,然后监视子组件中定义的事件,并接受对已定义变量的参数赋值:

  模板

  div style=border:1px纯红;填充:2rem宽度:400px边距:0自动;

  H3我是父组件/h3

  div组件传递给父组件的值:{{ChildMsg}}/div

  Child:father msg= data @ listen Child= listen Child /Child

  /div

  /模板

  脚本

  从导入子级。/Child ;

  导出默认值{

  data() {

  返回{

  数据:“我是你爸爸”,

  ChildMsg: ,

  }

  },

  组件:{

  儿童

  },

  方法:{

  ListenChild(数据){

  console.log(子组件传递过来的值:,数据);

  这个ChildMsg=数据

  }

  }

  }

  /脚本点击子组件中的"子组件将值传递给父组件",就可看到如下效果:

  

三、父子组件事件触发

  

父组件调用子组件中的事件方法

  通过裁判员直接调用子组件的方法:

  //Child.vue

  模板

  div style=border: 1px纯黑;宽度:150像素边距:10px自动

  我是子组件

  div style= color:red"{ msg } }/div

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  消息: ,

  }

  },

  方法:{

  childFun() {

  console.log(我是子组件的方法童趣’);

  this.msg=我的方法被调用了

  },

  },

  };

  /脚本

  在子组件标签上添加裁判员属性,然后在方法中通过这个。$参考文献找到绑定裁判员的属性调用该子组件内的方法即可。

  //Father.vue

  模板

  div style=border: 1px纯红;宽度:200像素填充:10px边距:0自动

  我是父组件

  Button @click=handleClick 点击调用子组件方法/按钮

  Child ref=child /

  /div

  /模板

  脚本

  从导入子级.子;

  导出默认值{

  组件:{

  儿童

  },

  方法:{

  handleClick() {

  这个参考文献。孩子。童趣();

  },

  },

  }

  /脚本通过组件的$ emit,$ on方法:

  //Child.vue

  模板

  div style=border: 1px纯黑;宽度:150像素边距:10px自动

  我是子组件

  div style= color:red"{ msg } }/div

  /div

  /模板

  脚本

  导出默认值{

  data() {

  返回{

  消息: ,

  }

  },

  已安装(){

  这个. on(childFun ,function() {

  console.log(我是子组件方法);

  this.msg=我的方法被调用了

  });

  }

  };

  /脚本

  在子组件中使用$on绑定一个方法,然后在父组件中通过$emit找到绑定$on上面的事件名即可,但是也需要裁判员的配合。

  //Father.vue

  模板

  div style=border: 1px纯红;宽度:200像素填充:10px边距:0自动

  我是父组件

  Button @click=handleClick 点击调用子组件方法/按钮

  Child ref=child /

  /div

  /模板

  脚本

  从导入子级.子;

  导出默认值{

  组件:{

  儿童

  },

  方法:{

  handleClick() {

  //子组件$on中的名字

  这个$refs.child.$emit(childFun )

  },

  },

  }

  /脚本两种实现方式效果一致。

  调用方法前:

  调用方法后:

  

子组件调用父组件中的事件方法

  直接在子组件中通过这个父母来调用父组件的方法

  //Father.vue

  模板

  div style=border: 1px纯红;宽度:200像素填充:10px边距:0自动

  我是父组件

  孩子/孩子

  div style= color:red"{ msg } }/div

  /div

  /模板

  脚本

  从导入子级.子;

  导出默认值{

  data() {

  返回{

  邮件:""

  }

  },

  组件:{

  儿童

  },

  方法:{

  fatherMethod() {

  console.log(我的父组件中的方法);

  this.msg=我的方法被子组件调用了;

  }

  }

  };

  /脚本

  //Child.vue

  模板

  div style=border: 1px纯黑;宽度:150像素边距:10px自动

  我是子组件

  button @click=childMethod 点击调用父组件方法/按钮

  /div

  /模板

  脚本

  导出默认值{

  方法:{

  childMethod() {

  这个$家长。父方法();

  }

  }

  };

  /脚本在子组件里用$emit向父组件触发一个事件,父组件监听这个事件(推荐使用)

  //Father.vue

  模板

  div style=border: 1px纯红;宽度:200像素填充:10px边距:0自动

  我是父组件

  子@父方法=父方法/子

  div style= color:red"{ msg } }/div

  /div

  /模板

  脚本

  从导入子级.子;

  导出默认值{

  data() {

  返回{

  邮件:""

  }

  },

  组件:{

  儿童

  },

  方法:{

  fatherMethod() {

  Console.log(我的父组件中的方法);

  This.msg=我的方法被子组件调用;

  }

  }

  };

  /脚本

  子组件可以使用$emit来触发父组件的自定义事件。

  //Child.vue

  模板

  div style=border: 1px纯黑;宽度:150px边距:10px自动

  我是一个子组件。

  Button @click=childMethod 单击以调用父组件方法/按钮

  /div

  /模板

  脚本

  导出默认值{

  方法:{

  childMethod() {

  //fatherMethod父组件方法

  这个。$ emit( father method );

  }

  }

  };

  /script父组件将该方法传递给子组件,并在子组件中直接调用该方法:

  //Father.vue

  模板

  div style=border: 1px纯红;宽度:200px填充:10px边距:0自动

  是我的父组件。

  Child:father method= father method /Child

  div style= color:red“{ msg } }/div

  /div

  /模板

  脚本

  从导入子级。/Child ;

  导出默认值{

  data() {

  返回{

  邮件:“”

  }

  },

  组件:{

  儿童

  },

  方法:{

  fatherMethod() {

  Console.log(我的父组件中的方法);

  This.msg=我的方法被子组件调用;

  }

  }

  };

  /脚本

  父组件可以将事件绑定到子组件的标签上,子组件使用props接收父组件的事件。

  //Child.vue

  模板

  div style=border: 1px纯黑;宽度:150px边距:10px自动

  我是一个子组件。

  Button @click=childMethod 单击以调用父组件方法/按钮

  /div

  /模板

  脚本

  导出默认值{

  道具:{

  父方法:{

  类型:功能,

  默认值:空

  }

  },

  方法:{

  childMethod() {

  if (this.fatherMethod) {

  this . father method();

  }

  }

  }

  };

  /script以上三种实现效果相同。

  在调用方法之前:

  调用方法后:

  

四、总结

  至此,Vue和它的亲子组件之间的大部分操作都已经涉及到了,我们在程序开发的过程中就可以对这部分驾轻就熟了。

  关于Vue中亲子组件的通信和事件触发的这篇文章到此为止。关于Vue中亲子组件的通信和事件触发的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

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

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