鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI

简介: 采用的方法是在修改数据时,通过`this.dArray.splice(index, 1, this.dArray[index])`替换指定元素,强制数组更新并反映到界面上。

由于业务的复杂,所以我们把相关UI抽离出来。但是数据变化了,没法更新UI

@Builder

MyGridLayout() {

  }



通过日志打印发现数据的确是更新了,但是UI就没没办法,如何解决呢

@Entry
@Component
struct Page35 {
  // @State sArray: boolean[] = [false, false, false, false]
  @State dArray: boolean[][]= [[false, false], [false, false]]
  build() {
    Column() {
      ForEach(this.dArray,(item:[],index:number)=>{
        ForEach(item,(item_2:boolean,index_2:number)=>{
          Button('第'+index+'组,第'+index_2+'个,value:'+item_2)
            .onClick(()=>{
              this.dArray[index][index_2] = !item_2//修改数据
              // 让数组元素地址变更,从而触发重绘
              // this.dArray[index] = [... this.dArray[index]]//方案一:拷贝数组
              // this.dArray[index] = JSON.parse(JSON.stringify(item))//方案二:序列化后再反序列化。
              //方案三:@Observed+@ObjectLink 参考官方文档
              this.dArray.splice(index, 1, this.dArray[index]);//方案四:替换指定索引元素
            })
        })
      })
    }
    .width('100%')
  }


我这边是通过方案四解决的,改变数据的时候,手动调用splice方法。


————————————————


                           版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

                     

原文链接:https://blog.csdn.net/u011404611/article/details/140111175


目录
打赏
0
0
0
0
3
分享
相关文章
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
本文由黑臂麒麟(6年前端经验)撰写,介绍ArkTS开发中的常用基础组件与布局组件。基础组件包括Text、Image、Button等,支持样式设置如字体颜色、大小和加粗等,并可通过Resource资源引用统一管理样式。布局组件涵盖Column、Row、List、Grid和Tabs等,支持灵活的主轴与交叉轴对齐方式、分割线设置及滚动事件监听。同时,Tabs组件可实现自定义样式与页签切换功能。内容结合代码示例,适合初学者快速上手ArkTS开发。参考华为开发者联盟官网基础课程。
68 18
harmonyOS基础- 快速弄懂HarmonyOS ArkTs基础组件、布局容器(前端视角篇)
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
44 11
【01】优雅草星云物联网AI智控系统从0开发鸿蒙端适配完成流程-初始化鸿蒙编译器deveco studio项目结构-UI设计图切片下载-优雅草卓伊凡
给Web开发者的HarmonyOS指南02-布局样式
本系列教程适合鸿蒙 HarmonyOS 初学者,为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。
104 5
给Web开发者的HarmonyOS指南02-布局样式
鸿蒙开发:弹性布局Flex
在实际的开发中,需要掌握主轴与交叉轴的关系、换行规则及子元素属性,同时注意性能与兼容性问题,还有一点,Flex组件在渲染时存在二次布局过程,因此在对性能有严格要求的场景下建议使用Column、Row代替。
71 10
鸿蒙开发:弹性布局Flex
|
1月前
|
鸿蒙开发:相对布局RelativeContainer
当然了,RelativeContainer组件还有着其它的属性,但是最重要的也就是位置的摆放,其实也就是相对于锚点组件的摆放;通过上述的案例,我们不难发现,所谓的左上右下,反着来就是对的,比如在锚点上边,我用bottom,在锚点下面,我用top,在实际的开发中,可极大节约我们的开发时间。
鸿蒙开发:相对布局RelativeContainer
鸿蒙栅格布局组件 GridRow 自学指南
在鸿蒙应用开发中,布局设计常因设备分辨率差异而面临挑战。传统固定布局可能导致组件挤压或显示错乱,而 GridRow 组件提供了灵活解决方案。它从 API Version 9 起支持栅格布局,搭配 GridCol 子组件实现强大适配能力。本文详解 GridRow 的参数、属性与事件,如 `columns`、`gutter`、`breakpoints` 等,并通过实战示例展示其应用。掌握 GridRow,助你轻松应对多尺寸设备布局需求,打造精美界面。
44 7
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
78 10
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
HarmonyOS ArkTS声明式UI开发实战教程
本文深入探讨了ArkTS作为HarmonyOS生态中新一代声明式UI开发框架的优势与应用。首先对比了声明式与命令式开发的区别,展示了ArkTS如何通过直观高效的代码提升可维护性。接着分析了其核心三要素:数据驱动、组件化和状态管理,并通过具体案例解析布局体系、交互组件开发技巧及复杂状态管理方案。最后,通过构建完整TODO应用实战,结合调试优化指南,帮助开发者掌握声明式UI设计精髓,感受ArkTS的独特魅力。文章鼓励读者通过“破坏性实验”建立声明式编程思维,共同推动HarmonyOS生态发展。
94 3
HarmonyOS NEXT 实战系列02-布局基础
ArkTS通过声明式编程构建应用UI,支持属性、事件和子组件配置。线性布局(LinearLayout)使用Row和Column实现水平或垂直排列,提供多种对齐方式如Start、Center等。基础组件如Text、Button具备通用属性(width、height等)与尺寸单位(vp、fp)。样式设置涵盖文本样式、背景、间距、边框等。扩展机制包括@Extend重用样式、@Styles简化样式定义、@Builder复用UI元素,支持条件渲染(if/else)和循环渲染(ForEach)。这些功能帮助开发者高效构建灵活的用户界面。
|
20天前
|
HarmonyOS NEXT - 网格布局(Grid)
网格布局(Grid) 网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等。 ArkUI提供了Grid容器组件和子组件GridItem,用于构建网格布局。Grid用于设置网格布局相关参数,GridItem定义子组件相关特征。Grid组件支持使用条件渲染、循环渲染、懒加载等方式生成子组件。
69 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等