鸿蒙:@prop @link数据传输原理

@prop传递数据属于单向传递,父组件修改数据子组件能感知,子组件修改数据父组件不能感知,注意被@prop修饰的子组件数据变量不能初始化 。

@link传递数据是属于双向传递,父组件修改数据子组件能感知,子组件修改数据父组件也能感知,注意被@link修饰的子组件数据变量不能初始化,且父组件传递的是引用,需要用$表示引用数据如:

总结:如何子组件不对数据对渲染用@prop ,如果子组件需要对数据进行渲染用@link

### 三级标题:MVVM 架构在鸿蒙系统中的数据传输机制 在 MVVM(Model-View-ViewModel)架构中,View 层与 ViewModel 层通过双向绑定进行通信。这种绑定机制使得 View 中的数据变化可以自动同步到 ViewModel,同时 ViewModel 的数据更新也会反映到 View 上。在鸿蒙开发中,这种机制通过装饰器如 `@State`、`@Prop` 和 `@Link` 等实现数据驱动的 UI 更新 [^2]。 例如,在一个简单的列表展示场景中,ViewModel 负责从 Model 获取数据并将其转换为 View 可以直接使用的格式。当用户点击某个列表项时,事件会递给 ViewModel,由它处理逻辑,并可能触发 Model 数据的更新。随后,ViewModel 的状态变更会通过数据绑定自动反映到 View 上,从而实现高效的 UI 响应 [^3]。 以下是一个使用 `@State` 实现数据绑定的示例: ```typescript @Component struct MyComponent { @State message: string = "Hello, MVVM!" build() { Column() { Text(this.message) .fontSize(30) .onClick(() => { this.message = "Data Updated!" }) } .width('100%') .height('100%') } } ``` 在这个例子中,`message` 是一个被 `@State` 装饰的状态变量,当其值发生变化时,UI 会自动刷新以显示新的内容 [^2]。 --- ### 三级标题:MVVM、MVC 和 MVP 架构的区别 #### MVC(Model-View-Controller) MVC 将应用程序划分为三层:Model(数据模型)、View(视图)和 Controller(控制器)。Model 负责管理数据和业务逻辑;View 负责显示界面;Controller 接收用户的输入,协调 Model 和 View 之间的交互。MVC 的优点在于结构清晰,但缺点是数据流较为复杂且不够统一,容易导致维护上的困难 [^1]。 #### MVP(Model-View-Presenter) MVP 是 MVC 的一种变体,Presenter 替代了 Controller,作为 View 和 Model 之间的中介。Presenter 负责处理所有的业务逻辑,并将结果返回给 View 显示。这种方式减少了 View 对 Model 的直接依赖,提高了模块化程度。然而,随着业务逻辑的增加,Presenter 层可能会变得臃肿,影响代码的可维护性 [^4]。 #### MVVM(Model-View-ViewModel) MVVM 在前端开发中得到了广泛应用,它不仅解决了 View 和 Model 的耦合问题,还通过数据绑定机制简化了两者之间的映射关系。ViewModel 作为中间层,负责封装 View 所需的数据以及操作这些数据的方法。View 和 ViewModel 之间通过双向绑定实现数据同步,这显著提升了开发效率和代码的可读性 [^3]。 --- ### 三级标题:各架构模式在数据流设计上的差异 在 MVC 模式中,View 直接与 Model 进行通信,Controller 主要负责接收用户输入并决定如何处理这些输入。这样的设计虽然直观,但可能导致数据流向不一致的问题 [^1]。 而在 MVP 中,View 不再直接访问 Model,而是通过 Presenter 来获取所需数据。Presenter 同时持有 View 和 Model 的引用,负责协调两者的交互。这种方式确保了 View 的纯粹性,使其专注于 UI 渲染 [^4]。 MVVM 则进一步优化了数据流的设计。View 与 ViewModel 之间通过数据绑定实现自动同步,而 ViewModel 本身则负责从 Model 获取数据并进行必要的转换。这种方式不仅降低了组件间的耦合度,还极大简化了 UI 编程 [^3]。 --- ### 三级标题:总结 三种架构模式各有特点: - **MVC** 强调分层设计,适合小型项目,但在大型应用中可能面临数据流混乱的问题。 - **MVP** 改进了 MVC 的结构,通过引入 Presenter 减少 View 对 Model 的依赖,适用于需要良好测试性的项目。 - **MVVM** 通过数据绑定机制极大地简化了 UI 开发流程,特别适合现代前端框架的应用场景 。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值