父子传值,使用 provide & reject

优点:不管多少层,都可以直接使用祖父节点的属性和方法

注意:

1. 如果属性是对象(比如testData2),那么是可以实现响应式变化,即祖父组件改变值,子孙组件都会相应变化

2. 如果属性是值(比如testData1),那么直接使用是无法实现响应式变化的,这时可以把testData1在provide里指定为用方法来获取

祖父:index.vue

data() {
    return {
        testData1: 0,
        testData2: {count: 0},
    }    
}
provide(){
    return {
      Test: this.myTest,
      Test2: this.myTest2,
      data1: () => { return this.testData1 },
      data2: this.testData2,
    }
},
myTest(e){
  console.log("myTest: ",e);
},
myTest2(e){
  console.log("myTest2: ",e);
},

父组件:child.vue

// 啥都不用干

子组件:child.vue

<template>
  <div>
    <p>{{this.data1()}}</p>
    <p>{{this.data2.count}}</p>
    <el-button type="primary" @click.native="callGrandFather">调用祖父节点事件</el-button>
  </div>
</template>

inject: {
    Test: 'Test',
    Test2: 'Test2',
    data1: 'data1',
    data2: 'data2',
},
created(){
    console.log("我是dictTableTable,我的参数tableName=",this.tableName);
    console.log("我是dictTableTable,我的参数tableName2=",this.tableName2);
},
methods: {
    callGrandFather(){
      this.Test(this.tableName)
      this.Test2(this.tableName2)
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值