当前位置: 首页 > news >正文

Vue——子级向父级使用props传递数据(函数)

文章目录

  • 前言
  • 原理
  • 案例
  • 效果演示

前言

看到这个标题,相信很多人会说我,你之前博客写的父级向子级中传递数据使用的是props,然后说的子级向父级传递数据则是用的$emit

并且还说了对于String、数组Array,只能是父级使用props传递至子级组件。这不是很矛盾嘛?

其实,props传递的数据类型除了字符串String数组Array对象 Object之外,还能传递一个Function 函数类型

原理

  • 1、父级将自己的某个函数,传递至子级中。
  • 2、子级获取父级传递来的函数类型,并进行调用操作。

相当于是子级组件调用了父级组件中的函数方法,触发父级的数据处理与展示。

案例

定义两个模板,分别如下所示:

父级模板 ComponentPropsParent.vue
父级向子级中传递了一个msg字符串类型的数据;
同时也传递了父级中的getDataFromChild 函数,但是传递的变量名是 getChildData

<template><h1>父级页面</h1><p>父级获取子级数据:{{ info }}</p><ComponentPropsChild msg="父级传子级数据" :getChildData="getDataFromChild"/>
</template>
<script>
// 引用子级组件
import ComponentPropsChild from './ComponentPropsChild.vue';
export default{data(){return{info:""}},components:{// 注册子级组件ComponentPropsChild},methods:{getDataFromChild(data){this.info = data;}}
}
</script>

子级模板 ComponentPropsChild.vue
使用props接收父级传来的字符串msg数据和getChildData 作为变量携带的函数
并调用父级传入的函数。

<template><h1>子级页面</h1><p>收到父级传递进子级的数据:{{ msg }}</p><!-- 不能这么写 --><!-- <button @click="transDataToFather('6666666')">点击一下传递数据到父级</button> --><!-- getChildData 是一个函数,不是变量,所以要加() 如果有参数,则是('xxx') --><p>子级调用父级传递进来的函数:{{ getChildData('子级调用父级传入函数,并返回这句话!') }}</p>
</template>
<script>
export default{data(){return{}},props:{msg:String,// 父级向子级中传递的是一个父级的函数,子级调用函数,会触发父级函数逻辑getChildData:Function // 注意 F 大写,表示是函数类型对象},// methods:{//  transDataToFather(values){//   getChildData(values);//  }// }
}
</script>

效果演示

在这里插入图片描述

相关文章:

  • Golang | Leetcode Golang题解之第137题只出现一次的数字II
  • FPGA SPI采集ADC7606数据
  • OKCC系统之编解码转码
  • 备战 清华大学 上机编程考试-冲刺前50%,倒数第3天
  • 小程序使用接口wx.getLocation配置
  • git 常用的命令
  • 【perfetto分析性能学习笔记】
  • eNSP学习——配置高级的访问控制列表
  • 计算机网络时延计算的单位换算问题
  • SpringCloud专题
  • canvas的使用方法
  • 【Linux取经路】守护进程
  • vue router中的导航守卫,它的5个使用场景举例
  • 航天科技集团与SPACEX公司的思考与分析
  • vue2+echarts实现简易的2d地图效果
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Android框架之Volley
  • CentOS7 安装JDK
  • Cumulo 的 ClojureScript 模块已经成型
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • 简单实现一个textarea自适应高度
  • 力扣(LeetCode)21
  • 利用DataURL技术在网页上显示图片
  • 前端存储 - localStorage
  • 强力优化Rancher k8s中国区的使用体验
  • 使用Gradle第一次构建Java程序
  • 小程序 setData 学问多
  • 学习笔记TF060:图像语音结合,看图说话
  • 一起参Ember.js讨论、问答社区。
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • #etcd#安装时出错
  • #职场发展#其他
  • (AngularJS)Angular 控制器之间通信初探
  • (zhuan) 一些RL的文献(及笔记)
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (论文阅读11/100)Fast R-CNN
  • (七)Knockout 创建自定义绑定
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转)创业的注意事项
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .libPaths()设置包加载目录
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .NET处理HTTP请求
  • .NET企业级应用架构设计系列之应用服务器
  • .NET项目中存在多个web.config文件时的加载顺序
  • .Net转Java自学之路—基础巩固篇十三(集合)
  • .so文件(linux系统)
  • @Autowired多个相同类型bean装配问题
  • @PreAuthorize与@Secured注解的区别是什么?