一文彻底拿下@State和@Prop和@Link的区别和联系

简介: 程序员Feri,12年+开发经验,专注于Java、嵌入式、鸿蒙、AI等领域,助力程序员成长。本文详解HarmonyOS装饰器:@State用于组件内部状态管理,状态变化触发重渲染;@Prop实现父组件向子组件单向数据传递,数据只读;@Link支持双向绑定,父子组件共享数据。掌握这些特性,让开发更高效!

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、嵌入式、鸿蒙、人工智能等,专注于程序员成长那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!






1.Harmony OS中的装饰器


在 HarmonyOS 中,装饰器是一种强大的编程特性,它可以在不修改原代码结构的基础上,为类、方法、属性等添加额外的功能和特性,提高代码的可读性、可维护性和可扩展性


装饰器是一种特殊的语法,它以 @ 符号开头,后面跟着一个函数或类的名称。


这个函数或类将被应用到所修饰的代码元素上,对其进行包装或修改。


装饰器本质上是一个高阶函数,它接收一个函数或类作为参数,并返回一个经过修改或增强的函数或类。



2.@State


@State 用于定义组件内部的状态变量,是组件的私有状态。


当 @State 修饰的变量发生变化时,会触发组件的重新渲染,以反映状态的更新。


它的生命周期与组件绑定,组件销毁时,@State 变量也会被销毁。


状态改变仅影响当前组件及其子组件。



3.@Prop


@Prop 用于父组件向子组件传递数据,它是单向的数据传递方式。


子组件不能修改通过 @Prop 接收的数据,只能读取。


当父组件更新 @Prop 数据时,子组件会收到更新并重新渲染。



4.@Link


@Link 也用于父组件向子组件传递数据,但它是双向的数据传递。


子组件可以修改通过 @Link 接收的数据,并且修改会反映到父组件中。


子组件和父组件中的 @Link 变量实际上是共享同一份数据,它们的状态是同步的。



好啦,就到这,今天写项目的时候,被这三个搞迷糊啦,所以得记录一下!



相关文章
|
Ubuntu 开发工具 Python
解决阿里云远程连接yum无法安装问题(Ubuntu 22.04)
解决阿里云远程连接yum无法安装问题(Ubuntu 22.04)
2866 2
|
2月前
|
人工智能 安全 开发工具
Skills 与 MCP 延迟加载:谁更高效、稳定与可控?——开发者工具架构的深度对比
本文深度对比Anthropic的Claude Skills与MCP延迟加载工具:从架构、性能、稳定性、安全性和开发体验五维度分析。Skills高效易用但控制受限;MCP灵活可控却需自主运维。二者非互斥,混合架构才是未来趋势。(239字)
566 9
如何给 NPM 设置代理
GFW 蛋疼的把 https://registry.npmjs.org 给墙了,导致无法通过 NPM 安装模块。
4426 0
|
11月前
HarmonyOS实战:Tab顶部滑动悬停功能实现
在鸿蒙开发中,实现Scroll嵌套List列表滑动时顶部悬停的效果是一个常见需求。本文详细介绍了如何通过布局和事件处理来实现这一功能。首先,使用Scroll嵌套List和Tab布局来构建基础页面。然后,通过设置nestedScroll属性为NestedScrollMode.PARENT_FIRST,确保外层Scroll优先滑动。接着,通过监听List和Scroll的滑动事件,处理滑动冲突,确保在特定条件下Scroll停止滑动,将滑动事件交给List处理。最终,实现了在上下滑动时优先让Scroll滑动的效果,并提供了扩展思路,如优先让List滑动等。
460 10
HarmonyOS实战:Tab顶部滑动悬停功能实现
|
10月前
TortoiseSVN使用-权限配置
TortoiseSVN使用-权限配置
349 2
|
10月前
|
开发者
HarmonyOS实战:GIF图下载突破5M限制保存到相册
本文介绍了在鸿蒙开发中解决图片下载问题的方法,包括突破5M流限制及识别图片真实格式(如GIF)。通过分段下载和类型判断,有效解决了大图下载失败及格式错误问题,适合开发者参考实践。
266 0
|
11月前
|
安全 IDE 开发工具
HarmonyOS实战:解决模拟器启动失败问题
本文介绍了在Windows系统上安装HarmonyOS开发环境时遇到的模拟器启动失败问题及解决方案。为应对鸿蒙可能脱离安卓阵营,开发者需学习HarmonyOS。华为提供的IDE与Android Studio相似,降低了学习成本。但创建鸿蒙模拟器时可能出现报错,官方方案无效时,可通过打开Windows安全中心的“内核隔离”并开启“内存完整性”解决。文章还鼓励初学者收藏内容,并在学习中交流问题。
765 1
HarmonyOS实战:解决模拟器启动失败问题
|
JavaScript 前端开发 物联网
ArkTs的@Watch状态监听
@Watch是ArkUI框架中用于监听状态变量变化的核心工具,类似Vue的Watch机制。状态更新时,方法触发,通过`changedPropertyName`区分多个绑定变量。需与@State、@Prop、@Link等装饰器配合使用,顺序上须置于这些装饰器之后。实际开发中,@Watch常与@Link(跨组件双向同步)或@Provide(跨代组件同步)结合使用。例如,通过@Link接收父组件变量并监听变化,动态调整子组件状态;或利用@Provide定义全局变量,监听后更新整体进度状态。这种机制提升了组件间状态管理的灵活性与解耦性,助力开发者高效构建复杂应用,实现“一次开发,多端部署”的目标。
604 15
|
传感器 存储 程序员
一文彻底搞明白51单片机的发展历程
51单片机自1980年Intel推出MCS-51系列以来,历经40余年发展,从最初的工业控制逐步扩展到家电、通信、智能家居等多领域。其哈佛架构和丰富的指令集奠定了技术基础,并通过持续创新保持竞争力。面对ARM等新架构的挑战,51单片机通过工艺革新和功能扩展,如集成ADC、USB、蓝牙等,仍占据电动工具、智能传感器等成本敏感领域的70%以上市场份额。如今,它不仅是嵌入式技术的活化石,更是中国电子产业崛起的见证者,全球90%的51单片机产自长三角地区。坚持学习,每天一个小知识点,是不是有了新收获,加油哈!
1376 0
|
算法 Serverless 数据安全/隐私保护
2024蓝桥杯RSA-Theorem
2024蓝桥杯RSA-Theorem