vue中多层嵌套组件父子孙组件传参

provide/inject

首先搭建脚手架,我这里使用vue2.6.11

父组件father.vue
子组件child1.vue
孙子组件child2.vue
三者是层层嵌套关系

引入
引入
father
child1
child2

父组件father.vue

<template>
  <div>
    父组件
    <child1></child1>
  </div>
</template>
<script>
import child1 from "./child1";

export default {
  name: "fatherProvide",
  components: {
    child1,
  },
  provide: {
    // 父组件用provide提供传参
    uname: "父组件传递的uname",
  },
  data() {
    return {};
  },
};
</script>

子组件child1.vue

<template>
  <div>
    子组件接收的数据:{{uname}}
    <child2></child2>
  </div>
</template>
<script>
import child2 from "./child2";

export default {
  name: "childInject1",
  components: {
    child2,
  },
  data() {
    return {};
  },
  inject: ["uname"]
};
</script>

孙子组件child2.vue

<template>
  <div>
    孙子组件接收的数据:{{foo}}
    <p>{{arr}}-{{typeof(arr)}}</p>
  </div>
</template>
<script>
export default {
  name: "childInject2",
  data() {
    return {
      // uname:this.uname
    };
  },
  inject: {
    foo: {
      //可以换名字
      from: "uname", //从其父组件获取的属性名
      default: "foo", //2.5.0+可使用default,就像props那样,可以设置默认值,变成可选项
    },
    arr: {
      from: "arr", //没有接收到就显示默认值
      default: () => [1, 2, 3, 4, 5],
    },
  }
};
</script>

执行结果
在这里插入图片描述

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值