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/10/12 8:26:58 阅读更多 →
Anaconda环境管理:Python开发者的高效解决方案

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

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

2026/10/12 8:26:59 阅读更多 →
Python键盘输入处理:从基础原理到跨平台实战应用

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

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

2026/10/11 2:45:05 阅读更多 →

最新新闻

8G显存本地部署MiniMax H3:视频生成与ComfyUI接入全攻略

8G显存本地部署MiniMax H3:视频生成与ComfyUI接入全攻略

第一次在8G显存的卡上把MiniMax H3本地版跑起来的时候,我自己都有点没缓过劲。最初印象里,视频生成模型想本地部署怎么也得16G显存起步,结果在量化方案的加持下不仅能跑,还能连续产出多条可用的漫剧分镜。这篇就把我从环境搭建、模…

2026/10/12 8:27:02 阅读更多 →
iff链:用链式等价证明破解循环论证的双向陷阱

iff链:用链式等价证明破解循环论证的双向陷阱

我最早对“当且仅当”四个字产生警惕,是在一次代码评审里。当时某个公开算法库的文档宣称“某数据结构能在常数时间内判定可达性当且仅当存在一条长度不超过给定阈值的路径”,实现者也把证明贴成了两段:“⇒”是正向,“⇐”是反向…

2026/10/12 8:27:02 阅读更多 →
Kaggle房价预测高维回归:从特征工程到Stacking融合实战

Kaggle房价预测高维回归:从特征工程到Stacking融合实战

简介:这份PDF资料面向具备一定Python与机器学习基础、希望系统掌握高维数据分类与回归实战的读者,以Kaggle经典房价预测赛题为载体,重点讲解如何用Stacking思维融合多种模型的优势。内容围绕完整流程展开:从pandas读取train与test…

2026/10/12 8:27:02 阅读更多 →
OpenCV傅里叶变换实战:频域滤波从原理到工业缺陷检测

OpenCV傅里叶变换实战:频域滤波从原理到工业缺陷检测

1. 为什么图像处理绕不开傅里叶变换刚接触OpenCV那会儿,我对傅里叶变换的态度就是两个字:跳过。理由也很简单——灰度、二值化、边缘检测、形态学操作,这些看得见摸得着的东西已经够用了,何必去碰那个满是复数、频域、频谱图的数学…

2026/10/12 8:27:02 阅读更多 →
Laravel vs ThinkPHP:架构基因与性能成本的选型权衡

Laravel vs ThinkPHP:架构基因与性能成本的选型权衡

前几天有个朋友问我:公司要起一个新项目,技术选型投票时团队吵翻了,一半人坚持用Laravel,理由是“现代架构、生态好、写起来优雅”,另一半人守着ThinkPHP不放,理由是“启动快、性能好、国内资料多”。我听完…

2026/10/12 8:27:01 阅读更多 →
不会编程,用AI写代码靠谱吗?TaoToken统一Key实测Cline MCP与Windsurf BYOK

不会编程,用AI写代码靠谱吗?TaoToken统一Key实测Cline MCP与Windsurf BYOK

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 8:26:01 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →