Vue中的 provide 和 inject 如何实现响应式传值?

官方文档对于provide和inject的说明:传送门.

由文档可以得知,这对选项必须搭配使用才能有效果

**使用场景:**当父组件需要给子孙组件共享父组件的数据时,在父组件中通过 provide 返回一个对象,在子孙组件中通过 inject:[key] (key是父组件provide对象绑定的key) ,如此就可以在子孙组件中共享父组件的数据

在使用场景中,肯定是希望父组件的数据一旦发生改变,子孙组件获取到的也是父组件更新后的数据。那么,怎么实现父组件与子孙组件所绑定的数据动态响应呢?

-------------------parent.vue----------------------
provide(){
    return {
   // keyName: {name:this.name}, // value 是对象才能实现响应式,也就是引用类型
      keyName: this.changeValue // 通过函数的方式也可以[注意,这里是把函数作为value,而不是this.changeValue()]
   // keyName: 'test' value 如果是基本类型,就无法实现响应式
    }
  },
data(){
  return {
	name:'张三'
}
  },
  methods: {
  	changeValue(){
  		this.name = '改变后的名字-李四'
  	}
  }  
  -------------grandson.vue-----------------
  inject:['keyName']
  create(){
	console.log(this.keyName) // 改变后的名字-李四
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值