当前位置: 首页 > news >正文

组件通信-provide、inject

  1. 概述:实现祖孙组件直接通信

  2. 具体使用:

    • 在祖先组件中通过provide配置向后代组件提供数据

    • 在后代组件中通过inject配置来声明接收数据

  3. 具体编码:

    【第一步】父组件中,使用provide提供数据

父组件:

<template><div class="father"><h3>父组件</h3><h4>资产:{{ money }}</h4><h4>{{ car.brand }}价值:{{ car.price }}</h4><button @click="money += 1">资产+1</button><button @click="car.price += 1">汽车价格+1</button><Child /></div>
</template><script setup lang="ts" name="Father">
import Child from './Child.vue'
import { ref, reactive, provide } from "vue";
// 数据
let money = ref(100)
let car = reactive({brand: '奔驰',price: 100
})
// 用于更新money的方法
function updateMoney(value: number) {money.value -= value
}
// 提供数据
provide('moneyContext', { money, updateMoney })
provide('car', car)
</script>
<style scoped>
.father {background-color: pink;width: 200px;height: 400px;padding: 20px;
}button {margin: 5px 0;
}
</style>

 子组件:注意:子组件中不用编写任何东西,是不受到任何打扰的

<template><div class="child"><h3>子组件</h3><GrandChild /></div>
</template><script setup lang="ts" name="Child2">
import GrandChild from './GrandChild.vue'
</script>
<style scoped>
.child {background-color: aquamarine;height: 190px;padding: 5px;
}
</style>

孙组件:【第二步】孙组件中使用inject配置项接受数据。

<template><div class="grand-child"><h3>我是孙组件</h3><h4>资产:{{ money }}</h4><h4>{{ car.brand }}价值:{{ car.price }}</h4><button @click="updateMoney(6)">点我花爷爷的钱</button></div>
</template><script setup lang="ts" name="GrandChild">
import { inject } from 'vue';
// 注入数据(解构赋值) 默认值:{ money: 0, updateMoney: (param: number) => { } }
let { money, updateMoney } = inject('moneyContext', { money: 0, updateMoney: (param: number) => { } })
//注入数据 默认值:{ brand: '未知', price: 0 }
let car = inject('car', { brand: '未知', price: 0 })
</script>
<style scoped>
.grand-child {background-color: rgb(173, 148, 232);height: 120px;margin: 10px 0;
}
</style>

http://www.dtcms.com/a/169166.html

相关文章:

  • whl文件名后缀
  • 传奇各职业/战士/法师/道士/戒指爆率及出处产出地/圣战/法神/天尊/虹魔/魔血/麻痹/超负载/求婚/隐身/传送/复活/护身/祈祷/火焰
  • PyQt 或 PySide6 进行 GUI 开发文档与教程
  • 电商平台的订单状态设计流程
  • NHANES指标推荐:TyG指数
  • 计算机启动流程中,都干了啥事。比如文件挂在,操作系统加载,中断向量表加载,磁盘初始化在哪阶段。
  • K8S - 深入解析 Service 与 Ingress - 服务暴露与流量管理
  • 在多socket多核计算机上配置MPI和OpenMP
  • Protubuf入门 --- 01基本语法与编译使用
  • C语言数据类型与内存布局
  • 算法竞赛进阶指南.巡逻
  • 13分区排烟 无法远程启动 12-1-4,排烟管道出口未连接室外
  • Linux-07-Shell
  • python常用科学计算库及使用示例
  • 数字智慧方案6185丨智慧银行解决方案(51页PPT)(文末有下载方式)
  • 【免费】2010-2019年上市公司排污费数据
  • 迪米特法则(LoD)
  • Baklib内容中台落地实战指南
  • 传奇各职业/战士/法师/道士/手套/手镯/护腕/神秘腰带爆率及出处产出地/圣战/法神/天尊/祈祷/虹魔/魔血
  • 用c 编写的笔记搜索程序
  • 如何用Python绘制两个圆之间的8条公切线
  • 第J6周:ResNeXt-50实战
  • C++ 动态内存管理详讲
  • 数字智慧方案5877丨智慧交通项目方案(122页PPT)(文末有下载方式)
  • SX24C01.UG-PXI程控电阻桥板卡
  • 英一真题阅读单词笔记 20-21年
  • 藏文词云生成器学习实践
  • 2000-2020年全国各地级市资本存量测算数据(以2000年为基期)(含原始数据+计算过程+结果)
  • 数字智慧方案5875丨智慧交通枢纽综合解决方案(43页PPT)(文末有下载方式)
  • ValueError: expected sequence of length 8 at dim 2 (got 0)