父向多个子,传数据(静态,动态)

1.传数据,静态


父组件

<template>
  <h3>父组件</h3>
  <Son></Son>
</template>

<script>
import Son from  "@/components/Son";
export default {
    name:"App3",
    components:{
        Son
    },
    data(){
      return {
        age: 16
      }
    },
    provide(){ 
        //向后代提供数据
      return {
        // 当前组件想要向后代传递的数据
        age:this.age
      }
    }
}
</script>

子组件

<template>
  <h3>儿子组件</h3>
  

  <!-- <Sun :age="age"></Sun> -->
</template>

<script>
export default {
    name:"Son",
    components:{
        // Sun
    },
    inject:["age"]  //接收数据  		
   //其它方式, 与props一样
}
</script>

2.传数据,动态


父组件

<template>
  <h3>父组件</h3>
  <Son></Son>
</template>

<script>
import Son from  "@/components/Son";
import {provide, ref, reactive} from "vue"; //1.引入组合式API

export default {
    name:"App",
    components:{
        Son
    },
    data(){
      return {
       
      }
    },
    setup(){ 
      //this指向undefined,而不是组件实例
      //放到响应式api转换
      //动态基础类型:用ref,动态引用类型,用reactive

      let age = ref(250);  
      let obj = reactive({
        name:"对象数据"
      });

      //数据传给,后代组件
      provide("age", age); 
      provide("obj", obj); 

      return { //将数据暴露给vue,作为vue的当前组件数据
        age
      }
    }
}
</script>

子组件

<template>
  <h3>儿子组件</h3>
  年龄{{age}}  <br>
  {{obj.name}}
  {{obj.tag}}
  <hr>
  <Sun></Sun>
</template>

<script>
import Sun from  "@/components/Sun";
//引入接收inject
import {inject} from "vue";
export default {
    name:"Son",
    components:{
        Sun
    },
    setup(){
      // 接收
      let age = inject("age");

      // let {value} = inject("age");
      let obj = inject("obj");
      
      
      //将数据暴露给vue,作为vue的当前组件数据
      return {
        age,
        obj
      }
    }
}
</script>

孙子组件

<template>
  <h3>孙子组件</h3>
  {{age}}
</template>

<script>
//使用方式和前面,子组件一样
import {inject} from "vue";
export default {
    name:"Sun",
    setup(){
     
      let age = inject("age");
      
      return {
        age
      }
    }
}
</script>

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值