HarmonyOS UI绘制装饰器无法通知刷新的问题
现在有一个界面,我发现在struct层级定义的@State变量,他的变动通知,不会影响到 struct内部的 @Builder装饰的方法。
具体代码如下
import { ContactTabs } from '@ohos/contact/src/main/ets/pages/ContactTabs';
import { ConversationListPage } from '@ohos/message/Index';
import { SocialCircle, WorkbenchPage } from '@ohos/socialcircle';
import { HomeTab } from '../views/HomeTab'
import { ValuesBucket } from '@kit.ArkData';
@Entry
@Component
export struct HomePage{
private swiperController: SwiperController = new SwiperController()
pages:Array<number> = [0,1,2];
@State selectIndex :number = 0;
build() {
Column(){
Swiper(this.swiperController){
ForEach(this.pages, (item:number, index)=>{
if(index == 0){
ConversationListPage()
}else if(index == 1){
WorkbenchPage()
}else if(index == 2){
ContactTabs()
}
})
}.width("100%")
.layoutWeight(1)
.autoPlay(false)
.index(this.selectIndex)
.loop(false)
.indicator(false)
.onChange(index=>{
this.selectIndex = index;
})
Row(){
this.bottomTab(0, this.selectIndex == 0)
this.bottomTab(1, this.selectIndex == 1)
this.bottomTab(2, this.selectIndex == 2)
}.width("100%")
.height(54)
}
}
@Builder
private bottomTab(index:number, selected:boolean){
Column(){
Image(selected?this.tabConfig[index][2]:this.tabConfig[index][1])
.width(24)
.height(24)
.margin({top:8})
Text(this.tabConfig[index][0])
.fontSize(10)
.fontColor(selected?0x05b0a2:0xa1a3a6)
.margin({top:2})
}.height(54)
.layoutWeight(1)
.alignItems(HorizontalAlign.Center)
.onClick(()=>{
this.selectIndex = index;
})
}
tabConfig: (string | Resource )[][] = [
["消息", $r('app.media.im_tab_msg_ic_nor'), $r('app.media.im_tab_msg_ic_sle')],
["工作台", $r('app.media.im_tab_work_ic_nor'), $r('app.media.im_tab_work_ic_sle')],
["通讯录", $r('app.media.im_tab_contact_ic_nor'), $r('app.media.im_tab_contact_ic_sle')],
]
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
该页面的功能,主要是点击底部tab,实现页面的切换。截图如下。
我发现,不论我怎么修改这个selectIndex, 这个private bottomTab(index:number, selected:boolean) 函数不会被触发执行。
请问,这里该怎么修改,才能刷新bottomTab
HarmonyOS
赞
收藏 0
回答 1
相关问题
状态装饰器 ui不刷新的问题
3091浏览 • 1回复 待解决
HarmonyOS 装饰器不刷新问题
862浏览 • 1回复 待解决
HarmonyOS navigation进行组件跳转如何通知刷新UI
897浏览 • 1回复 待解决
HarmonyOS LazyForEach问题刷新UI问题
937浏览 • 1回复 待解决
HarmonyOS 装饰器问题class
794浏览 • 1回复 待解决
HarmonyOS 关于组件装饰器的问题
911浏览 • 1回复 待解决
HarmonyOS @Observed装饰器问题咨询
876浏览 • 1回复 待解决
HarmonyOS UI 未刷新问题
1355浏览 • 0回复 待解决
HarmonyOS @Builder UI刷新问题
737浏览 • 1回复 待解决
HarmonyOS UI不刷新问题
785浏览 • 1回复 待解决
HarmonyOS 非UI类中改变State装饰属性,无法触发UI渲染
1071浏览 • 1回复 待解决
#鸿蒙通关秘籍# 在HarmonyOS NEXT中,如何使用@State装饰器确保变量变化能够触发UI刷新?
619浏览 • 0回复 待解决
HarmonyOS @ObjectLink 装饰器装饰的变量成员子组件中无法感知更新
1008浏览 • 1回复 待解决
HarmonyOS @Observed/@ObjectLink装饰器相关问题
1494浏览 • 1回复 待解决
HarmonyOS 自定义装饰器的this指向问题
821浏览 • 1回复 待解决
自定义装饰器的使用问题
1466浏览 • 1回复 待解决
HarmonyOS 自定义控制,传入String 类型无法同时支持 @State 装饰器和 没有装饰器的情况
1179浏览 • 1回复 待解决
HarmonyOS @State修饰@observed装饰的对象, 对象里的数组改变, 不会触发ui刷新
858浏览 • 1回复 待解决
HarmonyOS 接口请求网络数据返回后,如何通知页面UI数据刷新
1429浏览 • 1回复 待解决
@Sendable装饰器 用于解决无法在taskpool调用对象内的方法。为什么以装饰器的方式解决
2882浏览 • 1回复 待解决
列表数组中插入数据后,刷新UI的问题
1054浏览 • 1回复 待解决
HarmonyOS 在@builder中使用引用传递无法触发UI刷新
580浏览 • 1回复 待解决
HarmonyOS 通知列表刷新事件
714浏览 • 1回复 待解决
HarmonyOS UI不刷新
799浏览 • 1回复 待解决
HarmonyOS 主线程刷新UI
1116浏览 • 1回复 待解决
参考文档:
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-builder-V5
Demo更改如下