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

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

时间2025-05-02 16:58:57分类IT科技浏览3720
导读:前言 目前我们熟知的子向父传值有两种方式: 一种是在父组件中定义函数,然后将函数利用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
wordpress 搭建网站(为什么选择WordPress搭建网站?) seo的优化基础(seo的优化方案)