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

组合API-provide和inject函数

个人简介

👨‍💻‍个人主页: 魔术师
📖学习方向: 主攻前端方向,正逐渐往全栈发展
🚴个人状态: 研发工程师,现效力于政务服务网事业
🇨🇳人生格言: “心有多大,舞台就有多大。”
📚推荐学习: 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js实战 🍒Three.js 🍇鸿蒙开发
🪧使用备注:仅供学习交流 严禁用于商业用途 ,若发现侵权内容请及时联系作者
📤更新进度:持续更新内容
🤙个人名片:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧

14-组合API-provide和inject函数

掌握:通过 provide 和 inject 函数实现跨级组件通讯

大致内容:

  • 后代组件 使用 祖先组件的数据,祖传后
  • 后代组件 修改 祖先组件的数据,后传祖
    image.png

具体落地:

  • 祖先传递后代

    • provideinjectvue 中导入
    • provide('数据名称', 响应式数据) 提供数据的祖先组件使用
    • const data = inject('数据名称') 注入数据的后代组件使用

祖先组件

<template><div class="app"><p>祖先组件</p><p>姓名:{{ students.name }}</p><p>年龄:{{ students.age }}</p><hr /><Parent /></div>
</template><script>
import Parent from '@/components/parent.vue'
import { reactive, provide } from 'vue'
export default {name: 'App',components: { Parent },setup() {const students = reactive({ name: '张三疯', age: 199 })provide('students.age', students.age)return { students }}
}
</script>

父级组件

<template><div><p>父级组件</p><hr /><son></son></div>
</template>
<script>
import son from '@/components/son.vue'
export default {name: 'parentA',components: { son }
}
</script>
<style lang=""></style>

子级组件

<template><div><p>子级组件</p><p>注入数据的后代组件使用:{{ data }}</p></div>
</template>
<script>
import { inject } from 'vue'
export default {name: 'sonB',// 注入祖先组件提供的数据setup() {const data = inject('students.age')return { data }}
}
</script>
<style lang=""></style>

后代传递祖先

  • provide('数据名称', 修改函数) 提供函数的祖先组件使用
  • const changeMoney = inject('数据名称') 注入函数的后代组件使用
  • 遵循:数据由谁定义,由谁修改。

祖先组件

<template><div class="app"><p>祖先组件</p><p>姓名:{{ students.name }}</p><p>年龄:{{ students.age }}</p><hr /><Parent /></div>
</template><script>
import Parent from '@/components/parent.vue'
import { reactive, provide } from 'vue'
export default {name: 'App',components: { Parent },setup() {const students = reactive({ name: '张三疯', age: 199 })// 提供数据给后代provide('students.age', students.age)// 提供函数给后代provide('change', () => {students.age -= 99})return { students }}
}
</script>

子级组件

<template><div><p>子级组件</p><p>注入数据的后代组件使用:{{ data }}</p><button @click="change">子级组件age</button></div>
</template>
<script>
import { inject } from 'vue'
export default {name: 'sonB',// 注入祖先组件提供的数据setup() {const data = inject('students.age')// 注入祖先组件提供的函数const change = inject('change')return { data, change }}
}
</script>
<style lang=""></style>

总结:

  • 使用 provide 提供数据,使用 inject 注入数据。

    • 可以传递数据(使用数据),可以传递函数(修改数据)
http://www.xdnf.cn/news/678259.html

相关文章:

  • 多模态机器学习
  • Android 开发:从 View Activity 向 Compose Activity 传递数据的多种实现方式
  • [yolov11改进系列]基于yolov11引入可改变核卷积AKConv的python源码+训练源码
  • QCustomPlot设置曲线图中文字缩放大小
  • 微信小程序一次性订阅封装
  • Linux 权限管理基础:深入理解 root 与 sudo 的用法
  • 【监控】Spring Boot 应用监控
  • libvirt设置虚拟机mtu实现原理
  • 决策树 GBDT XGBoost LightGBM
  • ETL数据集成过程全流程优化指南
  • ICMP与TCP端口:网络层与传输层解析
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • Python的虚拟环境
  • 4 月 62100 款 App 被谷歌下架!环比增长 28%
  • 英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展
  • redis高并发问题
  • Common JS和ES Module的区别
  • 6.4.5_关键路径
  • 窗口函数总结篇
  • -动静态库简单使用
  • ABC 352
  • 依赖倒置原则 (Dependency Inversion Principle, DIP)
  • 分块查找详解
  • 第二章 1.3 数据采集风险的现有技术和解决方案
  • RK3568 OH5.1 镜像烧录
  • python第34天打卡
  • 深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河
  • Fine-tuning:微调技术,训练方式,LLaMA-Factory,ms-swift
  • AI智能分析网关V4垃圾桶满溢检测算法打造城市/公园/街道等场景应用方案
  • 浅谈Mysql的MVCC机制(RC与RR隔离级别)