HarmonyOS @Provide/@Consume 跨组件通信
适用版本HarmonyOS 6.1API 12及以上验证环境Pura 90 Pro 模拟器HarmonyOS 6.1.1API 24关键概念Provide、Consume、跨层级状态共享、主题系统前言Prop和Link适合直接父子通信但当状态需要跨越多个层级祖父→孙子时层层传递Prop十分繁琐。Provide/Consume解决了这个问题祖先组件“提供“状态任意后代组件“消费“无需中间层显式传递。一、基本用法// 祖先组件根组件 Entry Component struct AppRoot { Provide themeColor: string #0066ff // 提供共享状态 Provide themeName: string 蓝色主题 build() { Column() { MiddleLayer() // 中间层 } } switchTheme(): void { this.themeColor #07C160 // 修改 Provide → 所有 Consume 自动刷新 this.themeName 绿色主题 } } // 中间层无需关心 themeColor不用传 Prop Component struct MiddleLayer { build() { Column() { ThemeDisplay() // 深层子组件 } } } // 深层子组件直接消费 Component struct ThemeDisplay { Consume themeColor: string // 变量名必须与 Provide 一致 Consume themeName: string build() { Row() { Text().width(40).height(40).borderRadius(20).backgroundColor(this.themeColor) Text(当前主题: ${this.themeName}) } } }二、Provide 别名当变量名可能冲突时用字符串指定别名// 祖先 Provide(primaryColor) mainColor: string #0066ff // 后代用别名消费本地变量名可以不同 Consume(primaryColor) localColor: string三、子组件中的 Consume 也可以修改状态Consume和Link一样是双向的——子组件修改Consume变量会同步回Provide所在的祖先组件Component struct ThemeButton { Consume themeColor: string // 双向 label: string onTap: () void () {} build() { Button(this.label) .backgroundColor(this.themeColor) // 响应主题色变化 .onClick(() { this.onTap() }) } }四、与 Prop/Link 对比特性PropLinkProvide/Consume数据流父→子单向父↔子双向祖先↔任意后代双向跨层级❌ 需逐层传递❌ 需逐层传递✅ 直接跨层中间层需传递需传递无需关心适用场景直接父子展示直接父子双向主题、语言、权限等全局状态五、实战主题切换系统Entry Component struct AppRoot { Provide themeColor: string #0066ff Provide themeName: string 蓝色主题 Provide clickCount: number 0 private themes: string[][] [ [#0066ff, 蓝色主题], [#07C160, 绿色主题], [#e74c3c, 红色主题], [#9b59b6, 紫色主题], ] private idx: number 0 switchTheme(): void { this.idx (this.idx 1) % this.themes.length this.themeColor this.themes[this.idx][0] this.themeName this.themes[this.idx][1] this.clickCount } build() { Column() { Button(切换主题).onClick(() { this.switchTheme() }) NavBar() // 导航栏自动刷新主题色 ContentArea() // 内容区自动刷新主题色 } } }模拟器运行截图初始状态蓝色主题切换主题后点击「切换主题」后根组件修改Provide themeColor所有Consume themeColor的子组件中间层预览条、深层子组件 ThemeDisplay同步刷新颜色。实测结果切换次数主题根/中间层/深层子组件颜色0蓝色主题#0066ff全部同步为蓝色1绿色主题#07C160全部同步为绿色2红色主题#e74c3c全部同步为红色3紫色主题#9b59b6全部同步为紫色常见问题QProvide 变量和 State 变量有什么区别AProvide在内部仍然是State额外的作用是“广播“给所有后代中的Consume。单纯的State不会向后代广播。Q两个 Provide 变量名相同会冲突吗A如果组件树中存在嵌套的同名Provide内层的Provide会遮蔽外层Consume会找到最近的祖先Provide。通常应避免同名冲突使用别名区分。QConsume 必须有初始值吗A不需要初始值与Link一样ArkUI 运行时会在组件挂载时从祖先的Provide注入值。如果找不到对应的Provide运行时会报错。上一篇状态管理State/Prop/Link/Watch下一篇动画与过渡效果

相关新闻

PHP专家成长指南:从语法到架构的进阶之路

PHP专家成长指南:从语法到架构的进阶之路

1. PHP专家的核心能力图谱十年前我刚接触PHP时,以为会写几个CRUD页面就是专家了,直到参与了一个日均百万PV的电商项目重构才明白,真正的PHP专家需要的是立体化的技术栈。这张能力图谱是我从初级到资深PHP开发者的成长路径总结:1.1…

2026/8/15 22:14:55 阅读更多 →
Anaconda环境管理:Python开发者的高效解决方案

Anaconda环境管理:Python开发者的高效解决方案

1. 为什么选择Anaconda管理Python环境在Python开发领域,环境管理一直是个令人头疼的问题。我经历过无数次"在我的机器上能运行"的尴尬场景,也遇到过不同项目依赖冲突导致的诡异bug。经过多年实践,我发现Anaconda是最适合解决这些问…

2026/8/15 22:11:47 阅读更多 →
Python键盘输入处理:从基础原理到跨平台实战应用

Python键盘输入处理:从基础原理到跨平台实战应用

在实际开发过程中,键盘输入处理是一个基础但容易出问题的环节。无论是桌面应用、Web 前端还是嵌入式设备,开发者都需要准确捕获用户的按键事件,并处理不同操作系统、浏览器或硬件带来的兼容性问题。本文将以 Python 为例,深入讲解…

2026/8/15 3:08:27 阅读更多 →

最新新闻

微信聊天记录永久保存与年度报告生成:一次导出,装下你的一整年

微信聊天记录永久保存与年度报告生成:一次导出,装下你的一整年

微信聊天记录永久保存与年度报告生成:一次导出,装下你的一整年 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHu…

2026/8/16 15:55:45 阅读更多 →
告别命令行:Auto PY to EXE 如何三步把 .py 转成 .exe

告别命令行:Auto PY to EXE 如何三步把 .py 转成 .exe

告别命令行:Auto PY to EXE 如何三步把 .py 转成 .exe 【免费下载链接】auto-py-to-exe Converts .py to .exe using a simple graphical interface 项目地址: https://gitcode.com/gh_mirrors/au/auto-py-to-exe 小林刚转行做开发三个月,这天他…

2026/8/16 15:55:45 阅读更多 →
一次真实的迁移手记:如何用一个命令完成飞书文档批量导出

一次真实的迁移手记:如何用一个命令完成飞书文档批量导出

一次真实的迁移手记:如何用一个命令完成飞书文档批量导出 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 周五下午四点半,领导走过来拍了拍我的肩膀:"下周…

2026/8/16 15:55:45 阅读更多 →
Spring AI Alibaba 入门开发-提示词功能、提示词模板、格式化输出(备份)

Spring AI Alibaba 入门开发-提示词功能、提示词模板、格式化输出(备份)

前置内容:Spring AI Alibaba 入门开发一-CSDN博客 一、提示词(Prompt)——基础 1.1 介绍 Prompt 是引导 AI 模型生成特定输出的输入格式,Prompt 的设计和措辞会显著影响模型的响应。 Prompt 最开始只是简单的字符串&#xff0…

2026/8/16 15:55:45 阅读更多 →
用遍所有AI论文工具[特殊字符]终于摸清稳过审的底层逻辑|OKBIYE真的不一样

用遍所有AI论文工具[特殊字符]终于摸清稳过审的底层逻辑|OKBIYE真的不一样

2026写论文真的别再盲目跟风用免费AI了! 之前为了省事,轮番试过各类通用大模型、平价论文AI,本想高效搞定论文,结果踩坑无数:要么AI检测直接高危、要么文献造假翻车、要么模板太重被导师一眼识破,反复返修…

2026/8/16 15:55:45 阅读更多 →
从零搭建自动驾驶训练数据:跟着 LMDrive 走通 7 个环节

从零搭建自动驾驶训练数据:跟着 LMDrive 走通 7 个环节

从零搭建自动驾驶训练数据:跟着 LMDrive 走通 7 个环节 【免费下载链接】LMDrive [CVPR 2024] LMDrive: Closed-Loop End-to-End Driving with Large Language Models 项目地址: https://gitcode.com/gh_mirrors/lm/LMDrive 想训练一辆由大语言模型驱动的自动…

2026/8/16 15:54:44 阅读更多 →

日新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/16 0:00:54 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:55 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/16 0:03:55 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/16 6:00:23 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/16 6:00:24 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/16 6:00:27 阅读更多 →