首页IT科技vue中父子之间如何传值(vue中利用ref实现更灵活的子向父传值)

vue中父子之间如何传值(vue中利用ref实现更灵活的子向父传值)

时间2025-06-17 23:37:13分类IT科技浏览4166
导读:前言 目前我们熟知的子向父传值有两种方式: 一种是在父组件中定义函数,然后将函数利用props传给子组件,子组件调用时父组件可以收到子组件的参数;另一种利用自定义事件,给子组件在父组件中绑定一个自定义事件,子组件利用$emit方式触发该自定义事件时可以将数据传给父亲。...

前言

目前我们熟知的子向父传值有两种方式: 一种是在父组件中定义函数            ,然后将函数利用props传给子组件                    ,子组件调用时父组件可以收到子组件的参数;另一种利用自定义事件      ,给子组件在父组件中绑定一个自定义事件         ,子组件利用$emit方式触发该自定义事件时可以将数据传给父亲              。

今天介绍的是通过ref的方法实现子组件传值给父组件                  。这种方式比前两种方式用起来更加灵活      。

这里附上涉及到的知识点链接                    ,如有需要可以复习:

Vue组件之间的数据共享讲解

Vue中ref引用操作DOM元素

其中          ,第一篇文章中有涉及到子向父传值的传统方式           。

一      ,基础代码

这里放上我的App(父组件)和Son(子组件)的代码                   ,后续所有的改动在此基础之上:

(APP) <template> <div> <h2>子组件的msg:</h2> <Son></Son> </div> </template> <script> import Son from ./Son.vue export default { name: App, components: { Son } } </script> <style> </style>

(Son)

<template> <div> <h2>我是子组件</h2> </div> </template> <script> export default { name: Son, data() { return { msg: 巧克力小猫猿 } } } </script> <style> </style>

二              ,层次递进的讲解用法

2.1 给子组件设置ref

这里我们给子组件设置一个ref   ,并查看父组件中的this.$refs中有什么(在mounted钩子函数中打印):

打印出来的结果是:

可以看到                  ,此时ref对象中已经有了Son                 ,并且类型是vc(组件)                   。既然在ref对象中那我们可以通过ref去操作它         。

2.2 自定义事件

我们在学传统的子向父传值时,涉及到了自定义事件       。本节的方法依旧余自定义事件有联系               ,所以在正式了解如何用ref实现子向父传值时我们先来复习下自定义事件                    。

自定义事件的定义:使用vm.$on这个api:

vm.$on(自定义事件名,自定义事件被触发后调用的回调函数)

如:

vm.$on( aa, function () { console.log( aa ) })

自定义事件的触发:使用vm.$emit这个api:

vm.$emit(自定义事件名,自定义事件需要用到的参数1                    ,参数2   ,参数n)

一个是定义            ,一个是触发            。我在学习vue视频的时候看到很多人不理解用ref写的这种作法                    ,本质上是对自定义事件的不了解   。

2.3 给子组件设置一个自定义事件

在App中为子组件设置一个自定义事件:这里要说的是      ,==给谁绑定的自定义事件         ,就去找谁调用                    。==现在给子组件son绑定了一个自定义事件                    ,那么就要在子组件中去调用它               。并且如下图可知          ,给子组件设置的自定义事件名为qklxmy      ,一旦触发                   ,则调用回调函数getmsg。

在子组件中触发自定义事件:并且把son中的msg传给了该自定义事件qklxmy                 。(传的msg用于执行自定义事件的回调函数)

上述过程              ,给子组件定义了自定义事件   ,又在子组件中调用                  。由于子组件中自定义事件的回调写在父组件中                  ,所以父组件可以收到子组件的传值   。

三                 ,灵活性

在前面有说,这么写会更加灵活              。之所以灵活               ,是因为我们可以在钩子函数中使用这种方式传值                    ,如:

我们还可以写定时器来设置什么时候接到传值                  。

四   ,注意

通过此方式绑定自定义事件            ,回调要么配置在methos中                    ,就是如上方法      ,要么就用箭头函数      。

如果不用箭头函数         ,this的指向会出现问题           。

后记

以上就是vue中用ref实现灵活的子向父传值的方式                    ,希望能帮助读者朋友更好的理解组件之间的传值以及对ref的理解                   。欢迎关注         。

声明:本站所有文章          ,如无特殊说明或标注      ,均为本站原创发布       。任何个人或组织                   ,在未征得本站同意时              ,禁止复制            、盗用                    、采集      、发布本站内容到任何网站         、书籍等各类媒体平台                    。如若本站内容侵犯了原著者的合法权益   ,可联系我们进行处理            。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
微信 小程序 搜索(微信小程序中的搜索功能怎么实现) 巧克力系列海报(巧克力咖啡好喝吗)