vue父组件通过props如何向子组件传递方法详解


Posted in Javascript onAugust 16, 2017

前言

本文主要给大家介绍了关于vue中父组件通过props向子组件传递方法的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

vue 组件中的 this

vue 中 data/computed/methods 中 this的上下文是vue实例,需注意。

例如:

注意:不应该对 data 属性使用箭头函数 (例如data: () => { return { a: this.myProp }} ) 。理由是箭头函数绑定了父级作用域的上下文,所以 this 将不会按照期望指向 Vue 实例,this.myProp 将是 undefined

https://cn.vuejs.org/v2/api/#methods

父组件通过props向子组件传递方法

父组件调用子组件,通过绑定callback属性,将方法传给子组件:

App.vue 

<search-bar class="f-fr" placeholder="请输入名字" mutationName='resetListData' :callback="callback"/>

子组件通过props获取父组件传过来的callback方法:

SearchBar.vue

export default {
 name: 'SearchBar',
 data() {
  return {
   input: ''
  }
 },
 methods: {
  setName: function () {
   var input = this.input;
   if (input.trim() == '') {
    alert("empty");
   }
   else {
    Api.searchTest(this.input,this.success );
   }

  },
  success(responseData) {
   this.callback(responseData);
  },
 },
 props: ['placeholder', 'apiName', 'moduleName', 'mutationName','callback']
}

通过 data

export default {
 ...
 data:function() {
 return {
  callback:function(responseData) {
  this.$store.commit('resetListData', responseData);
  }
 }
 },
 ...
};

此处callback以函数对象的方式,传入子组件,子组件调用的时候,this指向子组件

通过 methods

export default {
 ...
 methods: {
 callback(responseData) {
  this.$store.commit('resetListData', responseData);
 }
 }
};

此处callback是父组件的一个方法,个人理解,当父组件初始化时,该方法的this上下文就绑定了父组件的实例,因此当子组件调用callback 方法时,this指向父组件。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
图片动画横条广告带上下滚动的JS代码
Oct 25 Javascript
javascript修改IMG标签的src问题
Mar 28 Javascript
JavaScript实现拖拽网页内元素的方法
Apr 15 Javascript
浅谈Javascript数组的使用
Jul 29 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
如何处理JSON中的特殊字符
Nov 30 Javascript
JavaScript 数组去重并统计重复元素出现的次数实例
Dec 14 Javascript
详解微信小程序实现WebSocket心跳重连
Jul 31 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
JavaScript使用localStorage存储数据
Sep 25 Javascript
微信小程序 bindtap 传参的实例代码
Feb 21 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 #Javascript
在一般处理程序(ashx)中弹出js提示语
Aug 16 #Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
Aug 16 #jQuery
详谈表单重复提交的三种情况及解决方法
Aug 16 #Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 #Javascript
Node.js 的模块知识汇总
Aug 16 #Javascript
vue绑定设置属性的多种方式(5)
Aug 16 #Javascript
You might like
用PHP读注册表
2006/10/09 PHP
swfupload 多文件上传实现代码
2008/08/27 PHP
详谈PHP编码转换问题
2015/07/28 PHP
php简单统计在线人数的方法
2016/05/10 PHP
php上传图片类及用法示例
2016/05/11 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
2018/10/10 PHP
javascript实现时间格式输出FormatDate函数
2015/01/13 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
基于jQuery实现交互体验社会化分享代码附源码下载
2016/01/04 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
js 数据存储和DOM编程
2017/02/09 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
Node.js assert断言原理与用法分析
2019/01/04 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
Python ZipFile模块详解
2013/11/01 Python
在Python中处理字符串之isdigit()方法的使用
2015/05/18 Python
使用rst2pdf实现将sphinx生成PDF
2016/06/07 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python面向对象中类(class)的简单理解与用法分析
2020/02/21 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
新手学python应该下哪个版本
2020/06/11 Python
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
JSF如何进行表格处理及取值
2012/08/06 面试题
爱情寄语大全
2014/04/09 职场文书
新教师岗前培训方案
2014/06/05 职场文书
个人融资协议书范本两则
2014/10/15 职场文书
党员干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python