@State 修饰的变量值改变,界面不刷新

@State testState: Object = { 
  "a": "aaaaaaa", 
  "b": "bbbbbbb", 
  "c": "ccccccc", 
  "d": "ddddddd", 
} 
@Builder 
buildTestItemView(data: string) { 
  Text(data).fontColor(Color.Black).fontSize(14) 
} 
 
build() { 
  Column() { 
    this.buildTestItemView(this.testState["a"]) 
    this.buildTestItemView(this.testState["b"]) 
    this.buildTestItemView(this.testState["c"]) 
    this.buildTestItemView(this.testState["d"]) 
  }.onClick(() => { 
    this.testState = { 
      "a": "zzzzzzzz", 
      "b": "yyyyyyyy", 
      "c": "xxxxxxxx", 
      "d": "wwwwwwww", 
    } 
  }) 
 
}

1.colum很难被点击到,因为被其上的text挡住了。

2.text的文本属性没有直接与@state 修饰的根变量绑定。@state的详细用法可以参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/arkts-state-0000001774279614

HarmonyOS
2024-05-30 22:38:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
e_leaner

示例代码:

@Entry 
@Component 
struct Page { 
  @State testState: Object = { 
    "a": "aaaaaaa", 
    "b": "bbbbbbb", 
    "c": "ccccccc", 
    "d": "ddddddd", 
  } 
  @Builder 
  buildTestItemView(name:string) { 
    Column({space:10}){ 
      Text(this.testState[name]) 
        .fontColor(Color.Black) 
        .fontSize(30) 
        .height(50) 
        .width('50%') 
        .backgroundColor('#ffbde9b9') 
        .onClick(() => { 
          console.log('文本被点击',this.testState[name]); 
        }) 
    } 
 
  } 
 
  build() { 
    Column({space:10}) { 
      this.buildTestItemView('a') 
      this.buildTestItemView('b') 
      this.buildTestItemView('c') 
      this.buildTestItemView('d') 
 
      Text(`${this.testState['a']}`) 
        .fontColor(Color.Black) 
        .fontSize(50) 
        .height(70) 
        .width('80%') 
        .backgroundColor('#ffd4e2e2') 
        .onClick(() => { 
          console.log('文本被点击',Object['a']) 
        }) 
    } 
    .backgroundColor('#ff5c7bae') 
    .width('100%') 
    .height('100%') 
    .onClick(() => { 
      console.log('容器被点击'); 
      this.testState = { 
        "a": "zzzzzzzz", 
        "b": "yyyyyyyy", 
        "c": "xxxxxxxx", 
        "d": "wwwwwwww", 
      } 
    }) 
 
  } 
}
分享
微博
QQ
微信
回复
2024-05-31 21:50:18
相关问题
如何监听Viewmodel里变量值变化
622浏览 • 1回复 待解决
如何动态查看代码运行时变量值
231浏览 • 1回复 待解决
LocalStorageLink修饰变量会自动保存
507浏览 • 1回复 待解决
关于状态变量@state必须知道
289浏览 • 1回复 待解决
状态装饰器 ui刷新问题
1093浏览 • 1回复 待解决
IF条件变化后UI刷新
154浏览 • 1回复 待解决
修改ForEach使用数据对象,UI刷新
171浏览 • 1回复 待解决
如何让变量名中包含“-”
415浏览 • 1回复 待解决
用数组变量控制组件属性生效
549浏览 • 1回复 待解决
@BuilderParam修饰属性报错
506浏览 • 1回复 待解决
readonly修饰数组无法获取数组元素
488浏览 • 1回复 待解决