Vue组件高级通讯之$children与$parent

 更新时间:2023年06月25日 14:59:06   作者:扶得一人醉如苏沐晨  
这篇文章主要为大家介绍了Vue组件高级通讯之$children与$parent,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、$children组件属性

官方介绍:当前实例的直接子组件。需要注意 $children 并不保证顺序,也不是响应式的。

即$children是组件自带的属性,它可以获取到当前组件的子组件,并以数组的形式返回。

二、$parent

官方介绍:指定已创建的实例之父实例,在两者之间建立父子关系。子实例可以用 this.$parent 访问父实例,子实例被推入父实例的 $children 数组中。

如果组件没有父组件,他的$parent为undefined,App组件(根组件)的$parent不是undefined,也不是App本身。

如果组件有多个父亲,但是$parent只能找到一个,不知道是不是bug,建议慎用。

注意:节制地使用$parent 和 $children它们的主要目的是作为访问组件的应急方法。更推荐用 props 和 events 实现父子组件通信。

三、小例子:通过借钱案例加深理解

Father.vue

<template>
  <div>
    <h2>父亲金钱:{{ fatherMoney }}</h2>
    <button @click="jieqian">问子女借钱100元</button>
    <Son></Son>
    <Daughter></Daughter>
  </div>
</template>
<script>
import Son from "./Son";
import Daughter from "./Daughter";
export default {
  components: {
    Son,
    Daughter,
  },
  data() {
    return {
      fatherMoney: 0,
    };
  },
  methods: {
    jieqian() {
      this.fatherMoney += 100 * 2;
      this.$children.forEach((dom) => {
        dom.childrenMoney -= 100;
      });
    },
  },
};
</script>
<style></style>

Son

<template>
  <div style="background-color: #999">
    <h2>儿子金钱:{{ childrenMoney }}</h2>
    <button @click="giveFatherMoney(100)">给父亲100</button>
  </div>
</template>
<script>
export default {
  name: "Son",
  data() {
    return {
      childrenMoney : 20000,
    };
  },
  methods: {
    giveFatherMoney(money) {
      this.$parent.fatherMoney += money;
      this.childrenMoney -= money;
    },
  },
};
</script>
<style>
</style>

Daughter

<template>
  <div style="background-color: #999">
    <h2>女儿金钱:{{ childrenMoney }}</h2>
    <button @click="giveFatherMoney(100)">给父亲100</button>
  </div>
</template>
<script>
export default {
  name: "Daughter",
  data() {
    return {
      childrenMoney : 20000,
    };
  },
  methods: {
    giveFatherMoney(money) {
      this.$parent.fatherMoney += money;
      this.childrenMoney -= money;
    },
  },
};
</script>
<style>
</style>

以上就是Vue组件高级通讯之$children与$parent的详细内容,更多关于Vue组件通讯$children $parent的资料请关注脚本之家其它相关文章!

相关文章

  • vue中防抖和节流的使用方法

    vue中防抖和节流的使用方法

    防抖和节流是我们在开发过程中常用优化性能的方式,可以减少不必要的计算,不浪费资源,只在适合的时候再进行触发计算,这篇文章主要给大家介绍了关于vue中防抖和节流使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • vue路由传参及获取参数的方式总结

    vue路由传参及获取参数的方式总结

    这篇文章主要介绍了vue路由传参及获取参数的方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法

    vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法

    这篇文章主要介绍了vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Vue中的Object.defineProperty全面理解

    Vue中的Object.defineProperty全面理解

    这篇文章主要介绍了Vue中的Object.defineProperty全面理解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 使用Vue3实现一个简单的思维导图组件

    使用Vue3实现一个简单的思维导图组件

    思维导图是一种用于表示信息、想法和概念的图形化工具,本文将基于 Vue3和VueDraggable实现一个简单的思维导图组件,支持节点拖拽,编辑及节点之间的关系连接,希望对大家有所帮助
    2025-04-04
  • 实例详解vue中的代理proxy

    实例详解vue中的代理proxy

    这篇文章主要介绍了vue中的代理proxy,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • vuex+axios+element-ui实现页面请求loading操作示例

    vuex+axios+element-ui实现页面请求loading操作示例

    这篇文章主要介绍了vuex+axios+element-ui实现页面请求loading操作,结合实例形式分析了vuex+axios+element-ui实现页面请求过程中loading遮罩层相关操作技巧与使用注意事项,需要的朋友可以参考下
    2020-02-02
  • Vue中util的工具函数实例详解

    Vue中util的工具函数实例详解

    本文通过实例代码给大家介绍了Vue中util的工具函数,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • Vue向下滚动加载更多数据scroll案例详解

    Vue向下滚动加载更多数据scroll案例详解

    这篇文章主要介绍了Vue向下滚动加载更多数据scroll案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-08-08
  • Vue表情输入组件 微信face表情组件

    Vue表情输入组件 微信face表情组件

    这篇文章主要为大家详细介绍了Vue表情输入组件,微信face表情组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02

最新评论