组件之间跨级通信

祖先组件

<script>
import Hello from './components/HelloWorld.vue'
export default{
  data(){
    return{
   msg:"年后好看",
    content:"啦啦啦啦",
   obj:{msg:"好好好"}
    }
  },
 components:{
   Hello:Hello
 },


 //provide:{message:"哈哈哈"}
 
 //访问组件实例的属性
 provide(){
   return{
     
     msg:this.msg,

    //provide/inject不是响应式的,
     obj:this.obj,//通过传递对象传递可以响应式
    content:()=>{return this.content}//函数返回响应式数据
   }
 }
}

</script>

<template>
<div>
<h2>祖先组件msg---{{msg}}</h2>
<button @click="this.msg='赢了'">改变Msg</button>

<h2>祖先组件obj.msg---{{obj.msg}}</h2>
<button @click="this.obj.msg='好了'">改变obj.Msg</button>

<h2>祖先组件content---{{content}}</h2>
<button @click="this.content='棒了'">改变content</button>

<Hello/>

</div>
</template>




父组件



<template>
  <div>
   <welcom/>
  </div>
</template>

<script>
import welcom from './TheWelcome.vue'

export default{
  components:{
   welcom:welcom
 }
}
</script>


孙子组件

<script>
export default{
  inject:['msg','obj','content'],
  computed:{//通过属性的方式
    getcontent(){
      return this.content()
    }
  }
}
</script>

<template>
 <div>
 我是孙子组件 
 <h2>孙子组件msg--{{msg}}</h2>
<h2>孙子组件obj.msg--{{obj.msg}}</h2>
<h2>孙子组件content--{{content()}}</h2>
<h2>孙子组件content--{{getcontent}}</h2>
 </div>
</template>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值