聊一聊Vue中的回调函数

2023-10-31

回调函数 ? 那不是UI框架才用的吗?

有句话怎么讲来着,书到用时方恨少。平常我们撸Vue,感觉即使用props封装组件。。也很少自己制作回调这种看起来高大上的东西.......

但是实际开发中封装组件并不是这样的。许多组件需要子父组件进行通信

让我们举个栗子:

产品经理有个需求,需要让你做一个优惠券列表。然后需要把优惠券列表封装成组件。在下单支付时,调用优惠券列表。然后选择其中一个,在父组件里获取选择的是哪张优惠券

优惠券列表的UI大致是这样子(以美团的示例):




这个需求看起来不难,但实际制作起来。。会发现有个问题:

父组件如何获取优惠券列表组件选中了哪一张优惠券?

这时候许多初学Vue.js的童鞋可能就凌乱了.....不知道用什么方式进行数据交互


如果你没有了解过Vuex,可以了解一个东西:


回调函数!

回调函数对于许多同学不陌生。ajax就是很好的例子

回调函数究竟是什么?

回调函数就是一个参数,将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数。这个过程就叫做回调


emmm.....云里雾里的。通俗一点,就是把方法体当成参数传递给另一个方法体,然后另一个方法体内部执行传递的方法体。并支持传入参数


话不多说,写个demo ==

首先我们先定义一个 子组件 并封装处理

<template>
  <!--简单点,定义一个按钮 并制定一个点击事件-->
  <button @click="childClick">testCallback</button>
</template>

<script>
  export default {
    name: "ChildComponents",
    props: {
      clickCallBack: {  //定义一个外来方法
        type: Function, //参数类型:函数
        required: true //是否必填:是
      }
    },
    methods: {
      childClick()  {
        this.$props.clickCallBack('这是来自子组件的问候~~'); //调用Props传来的方法体,并送他一个参数~~
      }
    }
  }
</script>
复制代码

接着定义一个父组件 调用子组件

<template>
  <!--调用子组件 传入method里的自定义函数-->
  <child :click-call-back="ParentTest"></child>
</template>

<script>
  import child from './ChildComponents'
  export default {
    name: "ParentComponents",
    components: {
      child
    },
    data() {
      return {
        say: ''
      }
    },
    methods: {
      ParentTest(val) { //自定义的函数 val是子组件给的参数
        this.say= val; //献给data一份问候~
        console.log(val,"in params"); //看看参数有没有值
        console.log(this.say,"in data"); //看看能不能给父组件的data传进去
      }
    }
  }
</script>
复制代码

好了,我们来看看结果:




啊哈,这样就可以解决子父组件通信的问题了。可以愉快的玩耍了~~


当然,我心血来潮自己实现了一种解决方案。Vue中推荐使用$emit进行回调传递.....


同学们也可以自己尝试写一下jQuery版的回调传递


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

聊一聊Vue中的回调函数 的相关文章

随机推荐

  • 模型旋转 触摸屏 手指滑动360度旋转 安卓版本 EasyTouch

    using UnityEngine using System Collections using System Collections Generic using DG Tweening using UnityEngine EventSys
  • 4.2.3 积分法(二)——分部积分法

    emmmm想想词 算了想不出来 既然不定积分和导数是反操作 那就从导数开始说吧 先看一个导数公式 就不解释变形过程了 上图其实就是分部积分法的计算过程 总之是分成两个步骤 先分部再积分 至于 C等到完全积分积出来之后再加 目前我们总结过的不
  • 深入 Python 3

    深入 Python 3 http dipyzh bitbucket org table of contents html xml 目录 深入 Python 3 中有何新内容 又名 负号层 安装 Python 深入 哪个版本的 Python
  • ajax前后端交互示例

    文章目录 一 前后端交互方法 1 Ajax前端示例 1 1 特点 1 2 ajax同域请求示例 1 3 ajax跨域请求示例 2 后端示例 2 1 controller层处理 一 前后端交互方法 1 Ajax前端示例 1 1 特点 Ajax
  • leetcode92 反转链表II

    题目 给你单链表的头指针 head 和两个整数 left 和 right 其中 left lt right 请你反转从位置 left 到位置 right 的链表节点 返回 反转后的链表 示例 输入 head 1 2 3 4 5 left 2
  • css动画(四)

    推荐动画四 html代码上传 div class night div class shooting star div div class shooting star div div class shooting star div div c
  • Swagger整体整理一下蛤

    最近在学习springboot时候发现好多开源的项目里面都提到了swagger 原来是一个前后端分离开发过程中为了防止两只团队为了需求更改打架 毕竟前端需要加一个参数 后端就要改好多好多 多的不说 直接上货 1 导入依赖 首先是导入依赖 既
  • Unity的Application.Quit()方法使用失效的其他解决方案。

    1 android手机上 使用方法 Application Quit 之后 游戏的进程还在 解决方法编写java代码 打成jar包或aar放到Assets Plugins Android libs下 public void KillProc
  • 全球互联网未来发展九大趋势

    当今世界网络信息技术日新月异 互联网正在全面融入经济社会生产和生活各个领域 引领了社会生产新变革 创造了人类生活新空间 带来了国家治理新挑战 并深刻地改变着全球产业 经济 利益 安全等格局 互联网正在成为21世纪影响和加速人类历史发展进程的
  • STL模板(一)向量、栈和队列

    一 vector 向量 1 定义 向量类型可以容纳许多类型的数据 被称为容器 可以当数组使用 可以随时增加或减少元素 内存连续 顺序表 2 头文件 include
  • unity, Animation crossfade需要两动画在时间上确实有交叠

    unity现在播动画都用Animator了 但公司的老项用的还是Animation 今天遇到一个bug 是两个动画的衔接处不连贯 最后发现是由于A动画已经播完之后B动画才开始播 而且还用了crossfade 0 2 正确的用法是在A动画还差
  • layui框架学习(30:树形模块)

    Layui中的树形组件模块tree用于以树形形式显示上下级结构的数据 类似于winform中的tree控件 tree模块的基本用法及显示效果如下所示 div div br
  • 2020年高教社杯全国大学生数学建模竞赛C题 第二问详细解答+代码

    2020年高教社杯全国大学生数学建模竞赛C题 第二问详细解答 代码 本文摘自小编自己的参赛论文与经历 小编获得了2020年高教社杯国奖 有问题的同学们可私聊博主哦 问题2 缺少信誉评级后的 信贷策略 研究 1 1 问题分析 问题二与问题一的
  • go语言检测字符串是否是回文

    输入的字符串分为三种情况 本身就是回文字符串 如 aba bddb vvvvv和vvvv等 本身不是回文字符串 但是可以通过删除一个字符成为回文字符串 如 abca deeee eddze和aydmda等 本身不是回文字符串 不能通过仅删除
  • vmware 不能自适应客户机的解决办法

    本文适用于 安装了vmware tools 后 立即适应客户机 仍为灰色 不能自适应的情况 环境 物理机 WIN10 vmware64 ubuntu16 04 sudo apt get install open vm tools open
  • 解决IDEA一个突发异常

    解决Module learn production java lang ClassCastException class org jetbrains jps builders java dependencyView TypeRepr Pri
  • 挣值常用的计算公式

    原文 http www cnitpm com pm 7707 html http blog sina com cn s blog 4be9c1450100vccg html 挣值管理法中的PV EV AC SV CV SPI CPI这些英文
  • Redis存储List类型数据

    Redis存储支持的类型没有object 虽然有支持list 但是它只支持list
  • What really happens when you navigate to a URL

    As a software developer you certainly have a high level picture of how web apps work and what kinds of technologies are
  • 聊一聊Vue中的回调函数

    回调函数 那不是UI框架才用的吗 有句话怎么讲来着 书到用时方恨少 平常我们撸Vue 感觉即使用props封装组件 也很少自己制作回调这种看起来高大上的东西 但是实际开发中封装组件并不是这样的 许多组件需要子父组件进行通信 让我们举个栗子