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中props对象中设置多个默认值的问题

    解决vue中props对象中设置多个默认值的问题

    props中设置了默认值,但是获取时(获取父页面没有传的属性) 打印出来是undefined,所以本文给大家介绍了解决vue中props对象中设置多个默认值的问题,需要的朋友可以参考下
    2024-04-04
  • Vuex实现购物车小功能

    Vuex实现购物车小功能

    这篇文章主要为大家详细介绍了Vuex实现购物车小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • Vue3使用postcss-px-to-viewport实现页面自适应

    Vue3使用postcss-px-to-viewport实现页面自适应

    postcss-px-to-viewport 是一个 PostCSS 插件,它可以将 px 单位转换为视口单位,下面我们就看看如何使用postcss-px-to-viewport实现页面自适应吧
    2024-01-01
  • 详解Vue方法与事件

    详解Vue方法与事件

    本篇文章主要介绍了详解Vue方法与事件。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 解决antd 表单设置默认值initialValue后验证失效的问题

    解决antd 表单设置默认值initialValue后验证失效的问题

    这篇文章主要介绍了解决antd 表单设置默认值initialValue后验证失效的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 在vue上使用cesium开发三维地图的详细过程

    在vue上使用cesium开发三维地图的详细过程

    这篇文章主要给大家介绍了关于在vue上使用cesium开发三维地图的详细过程,Cesium是一个强大的JavaScript库,支持三维地理信息展示,并提供了丰富的地理空间数据可视化功能,需要的朋友可以参考下
    2023-12-12
  • vue如何实现清空this.$route.query的值

    vue如何实现清空this.$route.query的值

    这篇文章主要介绍了vue如何实现清空this.$route.query的值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • vue的生命周期钩子与父子组件的生命周期详解

    vue的生命周期钩子与父子组件的生命周期详解

    Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期
    2022-08-08
  • vue3中利用Export2Excel将数据导出为excel表格

    vue3中利用Export2Excel将数据导出为excel表格

    这篇文章主要给大家介绍了关于vue3中利用Export2Excel将数据导出为excel表格的相关资料,最近项目需要前端来导出Excel操作,所以给大家总结下,需要的朋友可以参考下
    2023-09-09
  • Vue实现导入Excel功能步骤详解

    Vue实现导入Excel功能步骤详解

    这篇文章主要介绍了Vue实现导入Excel功能,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07

最新评论