news 2026/6/10 15:17:49

AttributeModifier与AttributeUpdater区别及源码使用DEMO

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AttributeModifier与AttributeUpdater区别及源码使用DEMO

AttributeModifier与AttributeUpdater区别及源码使用DEMO

一、结论

鸿蒙ArkUI中AttributeModifier和AttributeUpdater均用于组件属性动态配置,核心差异在于更新机制与适用场景:

AttributeModifier是基础属性设置接口,主打多状态样式封装、共享UI样式、小批量属性更新,需绑定@State状态变量触发UI更新。

AttributeUpdater继承自AttributeModifier,主打属性直通更新、大批量属性修改、组件构造入参变更,可绕过@State机制直接触发UI更新,解决Modifier大批量修改的性能损耗问题。

二、代码实现和详细解释

1、通过基础示例分别实现AttributeModifier(多状态样式+小批量更新)和AttributeUpdater(直通更新+大批量修改+构造入参变更),直观对比两者的使用方式和更新机制。

import{AttributeUpdater}from'@ohos.arkui.modifier'/** * AttributeUpdater定义 */classMyButtonUpdateextendsAttributeUpdater<ButtonAttribute>{// 首次绑定时触发initializeModifier方法,进行属性初始化initializeModifier(instance:ButtonAttribute):void{instance.width('50%').height(30)}}/** * AttributeModifier定义 */classMyButtonModifierimplementsAttributeModifier<ButtonAttribute>{isDark:boolean=falseapplyNormalAttribute(instance:ButtonAttribute):void{if(this.isDark){instance.backgroundColor(Color.Blue)}else{instance.backgroundColor(Color.Red)}}}@Entry @Component struct Index{// AttributeUpdater 虽然继承于AttributeModifier需要使用,但是自带更新属性的能力update:MyButtonUpdate=newMyButtonUpdate();// AttributeModifier需要使用@State进行数据绑定,控件才能支持动态更新。// @State modifier: MyButtonModifier = new MyButtonModifier();build(){Row(){Column(){Button("Button")// .attributeModifier(this.modifier).attributeModifier(this.update).onClick(()=>{// this.modifier.isDark = !this.modifier.isDark// 通过attribute,直接修改组件属性,并立即触发组件属性更新this.update.attribute?.width('100%')
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 8:09:49

数据挖掘09

数据挖掘09 —— 基于神经网络的序列数据挖掘 一、循环神经网络 1.定义 **循环神经网络&#xff08;Recurrent Neural Network, RNN&#xff09;**是一种专门用于处理序列数据的神经网络结构。 2.核心思想&#xff1a;引入“循环”实现记忆 在标准神经网络中&#xff0c;每个输…

作者头像 李华
网站建设 2026/6/10 8:11:24

3倍性能提升!COLMAP三维重建的矩阵运算优化实战

3倍性能提升&#xff01;COLMAP三维重建的矩阵运算优化实战 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap COLMAP作为业界领先的三维重建工具&#xff0c;其核心计算性能直接…

作者头像 李华
网站建设 2026/6/10 6:07:14

如何写出完美的Prompt(提示词)?

1 场景1 突然有天你老板微信cue你&#xff0c;拉了一段合并转发的对话发你说&#xff1a;“小李&#xff0c;把这份表格填写下&#xff0c;尽快&#xff01;”于是你开始了“阅读理解”&#xff0c;看了半天由于这段合并转发的对话中缺少了必要信息/前因后果&#xff0c;只知…

作者头像 李华
网站建设 2026/6/10 8:11:53

10个高效技巧:终极免费垃圾分类数据集实战指南

还在为垃圾分类AI训练找不到好数据而烦恼&#xff1f;标注格式混乱导致训练失败&#xff1f;数据增强参数设置不合理影响模型精度&#xff1f;今天手把手教你用ai53_19/garbage_datasets这个免费宝藏数据集&#xff0c;快速构建高精度垃圾分类模型&#xff01;&#x1f680; 【…

作者头像 李华
网站建设 2026/6/9 18:58:46

光线追踪3大纹理优化策略:从内存瓶颈到70%性能提升的实战指南

在光线追踪渲染中&#xff0c;纹理内存管理是决定性能的关键因素。通过分析raytracing.github.io项目的源码实现&#xff0c;我们发现合理的纹理压缩技术可以显著降低内存占用&#xff0c;同时保持视觉质量。本文将带你掌握三种核心优化策略&#xff0c;实现从卡顿到流畅的渲染…

作者头像 李华
网站建设 2026/6/10 9:55:13

Orleans分布式追踪终极指南:Jaeger与Zipkin深度对比分析

Orleans分布式追踪终极指南&#xff1a;Jaeger与Zipkin深度对比分析 【免费下载链接】orleans dotnet/orleans: Orleans是由微软研究团队创建的面向云应用和服务的分布式计算框架&#xff0c;特别适合构建虚拟 actor模型的服务端应用。Orleans通过管理actors生命周期和透明地处…

作者头像 李华