Vue2.x 中,通过provide和inject实现祖孙组件传值

本文介绍了Vue.js中provide和inject的功能,它们被用来实现祖孙组件间的通信。通过实例展示了如何在祖先组件中提供数据,并在子孙组件中注入这些数据,无论组件层级有多深。

介绍

使用provideinject 可以实现祖孙组件之间的通信;通常这两个属性要一起使用;祖先组件通过 provide将需要向子孙组件传递的值return 出去;然后子孙组件通过inject注入依赖;不管层级有多深,都可以使用祖先组件传递过来的数据以及方法。祖孙组件的传值,一般用于多层级的关系当中,使用便捷。

使用

祖先组件:

<script>
export default {
  data() {
    return {
      user: {
        name: 'lisa',
        age: 14,
      },
      number: 1,
      list: [
        {
          index: 0,
          str: 'first'
        },{
          index: 1,
          str: 'second'
        }
      ]
    }
  },
  provide() {
    return {
      state: this,  // 将整个this 传递给子孙组件
    }
  }
}
</script>

子孙组件:

 <template>
    <div class="son">
      <span>{{state.member}}</span>
    </div>
 </template>
<script>
export default {
   inject: ['state'], //注入依赖
   data() {
    return {
    }
  },
	created() {
	  console.log(this.state); // 打印祖先组件传递过来的整个this对象
	}
}
</script>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值