广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >VUE中如何优雅实现爷孙组件的数据通信
  • 205
分享到

VUE中如何优雅实现爷孙组件的数据通信

2024-04-02 19:04:59 205人浏览 薄情痞子
摘要

目录$attrs和$listeners如何使用呢?$attrs的使用:$listeners的使用:总结:在开发的过程中遇到这么个场景,我需要在爷组件中请求数据,请求到的数据呢需要在孙

  • 开发的过程中遇到这么个场景,我需要在爷组件中请求数据,请求到的数据呢需要在孙组件中使用。

  • 爷孙组件是这样的:我有一个根组件index.Vue,根组件中有一个父亲组件<Father/>,在父亲组件中又有一个子组件,我们叫他孙组件<Son/>

  • 看到这个场景,vuex、eventBus是有些大材小用了,然后我就用了props,将数据传递给<Father/>,又将这个值通过props传给<Son/>。但是这么传递似乎又感觉有些low了,那有没有更好的办法呢?确实有!那就是$attrs和$listeners。

$attrs和$listeners如何使用呢?

  • $attrs是用来将数据从爷组件传递给孙组件的。
  • $listeners是用来从孙组件中触发爷组件中事件的。

$attrs的使用:

  • 在爷组件(index.vue)中,类似props传值,将需要传递的值绑定在父组件上。
  • 在父组件中,也是类似props传值,但是这里传递的就不是值了,而是$attrs。
  • 在孙组件中,接收props,这样就可以在孙组件中使用这个数据了。

(需要注意的是父组件中不需要接收props,只要在孙组件中接收就可以。)

然后上代码:

//index.vue:
<Father :homeInfo="homeInfo"/>

//Father.vue:
<Son v-bind="$attrs"/>

//son.vue:
<template>
    <div class="home">
    {{homeInfo.name}}
    </div>
</template>

<script>
export default {
    name: "Son",
    data() {
        return {};
    },
    props: {
        homeInfo: {
            default: Object,
            default: () => {},
        },
    },
};
</script>

$listeners的使用:

  • 在爷组件(index.vue)中,绑定事件。
  • 在父组件中,也是类似绑定事件,但是这里绑定的不是具体的事件,而是v-on="$listeners"。
  • 在孙组件中,需要的时候触发($emit)这个事件即可。

然后上代码:

//index.vue:
<Father :homeInfo="homeInfo" @update="update"/>

//Father.vue:
<Son v-bind="$attrs" v-on="$listeners"/>

//son.vue:
<template>
    <div class="home" @click="update">
    {{homeInfo.name}}
    </div>
</template>

<script>
export default {
    name: "Son",
    data() {
        return {};
    },
    props: {
        homeInfo: {
            default: Object,
            default: () => {},
        },
    },
    methods: {
        update() {
            const newHome = {
                name: 'new'
            }
            this.$emit("update", newHome)
        }
    }
};
</script>

总结:

其实$attrs和$listeners相当于是一个中转,主要用在父亲组件上。爷组件和孙组件保持以前的使用即可!

到此这篇关于VUE中如何优雅实现爷孙组件数据通信的文章就介绍到这了,更多相关VUE爷孙组件数据通信内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: VUE中如何优雅实现爷孙组件的数据通信

本文链接: https://www.lsjlt.com/news/146319.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • VUE中如何优雅实现爷孙组件的数据通信
    目录$attrs和$listeners如何使用呢?$attrs的使用:$listeners的使用:总结:在开发的过程中遇到这么个场景,我需要在爷组件中请求数据,请求到的数据呢需要在孙...
    99+
    2022-11-13
  • vue中如何实现非父子组件的通信
    这篇文章主要介绍了vue中如何实现非父子组件的通信,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Provide和InjectProvide和Inject用于非父子组件之间...
    99+
    2023-06-29
  • Vue如何实现父子组件之间的通信功能
    这篇文章主要为大家展示了“Vue如何实现父子组件之间的通信功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue如何实现父子组件之间的通信功能”这篇文章吧。在...
    99+
    2022-10-19
  • vue组件中如何实现数据传递
    这篇文章给大家分享的是有关vue组件中如何实现数据传递的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:1、props:父组件 -->传值到子组件app.vue是父组...
    99+
    2022-10-19
  • vue如何实现兄弟组件的数据传递
    本篇内容介绍了“vue如何实现兄弟组件的数据传递”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在main.js里面设置data{eventH...
    99+
    2023-07-04
  • vue中子组件向父组件传递数据如何实现加减功能
    小编给大家分享一下vue中子组件向父组件传递数据如何实现加减功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!如下图所示:当没有任何操作的时候父组件的值是 0当点击加号以后父组件的值是 1...
    99+
    2022-10-19
  • GO 语言中如何优雅地实现大数据的接口加载?
    随着大数据时代的到来,越来越多的企业开始关注数据的价值,而数据的处理和分析需要依托于高效的接口加载。GO 语言是一种高效的编程语言,而且它在网络编程方面也有着很高的性能表现。在这篇文章中,我们将探讨如何利用 GO 语言优雅地实现大数据的接...
    99+
    2023-06-17
    接口 load 大数据
  • 如何实现angularjs2中父子组件的数据传递
    这篇文章主要介绍如何实现angularjs2中父子组件的数据传递,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!父到子组件之间的数据传递父组件模板中引用子组件 // ...
    99+
    2022-10-19
  • JAVA如何通过使用数组遍历和if条件实现选择数据中的最大值
    这篇文章给大家分享的是有关JAVA如何通过使用数组遍历和if条件实现选择数据中的最大值的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言:通过使用数组遍历和if条件实现选择数据中的最大值。public ...
    99+
    2023-06-02
  • ASP 中的接口和数组文件如何实现数据交互?
    在 ASP 中,接口和数组文件可以被用来实现数据交互。接口是一种定义了一组方法和属性的集合,而数组文件则是一种文本文件,其中存储了一些数据。在本文中,我们将会讲解如何使用这些工具来实现数据交互。 一、使用接口实现数据交互 在 ASP 中,...
    99+
    2023-07-19
    接口 数组 文件
  • 分布式系统中的 Python 与 JavaScript:如何实现数据共享与通信?
    随着互联网的发展,分布式系统已经成为了各种应用中不可或缺的一部分。在分布式系统中,不同的计算机节点之间需要实现数据共享和通信,而Python和JavaScript这两种语言都是非常适合用于实现分布式系统的语言之一。本文将介绍如何使用Pyt...
    99+
    2023-08-21
    分布式 javascript windows
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作