HarmonyOS 鸿蒙Next tabBar中的内容如何更新
HarmonyOS 鸿蒙Next tabBar中的内容如何更新
@State statisticsBean: UserStatisticsBean = new UserStatisticsBean()
TabContent() {
MyZoneListComponent({ type: 0 })
}.tabBar(this.barItem("出版书籍", this.statisticsBean?.userMakeCount ?? 0, 0))
@Builder
barItem(content: string, count: number, index: number) {
Column() {
Row() {
Text(content)
.fontWeight(FontWeight.Regular)
.fontSize("32lpx")
.fontColor(index == this.currentIndex
? $r("app.color.theme_blue")
: $r("app.color.black_333333"))
Text("(" + count + "本)")
.fontWeight(FontWeight.Regular)
.fontSize("26lpx")
.fontColor(index == this.currentIndex
? $r("app.color.theme_blue")
: $r("app.color.black_333333"))
}
.alignItems(VerticalAlign.Bottom)
}
}
这个statisticsBean默认是空的,所以tabBar中的内容应该是“出版书籍0本”,但是获取到内容之后,statisticsBean发生了变化,为什么tabBar中的内容不会变化呢。
4 回复
你用[@Builder](/user/Builder)来实现自定义组件,参数是不可观察的普通类型,参数更新了,UI是监听不到的。你可以用
[@Component](/user/Component)的方式来实现自定义组件,同时相应的参数用[@State](/user/State)或[@Link](/user/Link)来标记,这样数据更新后,就会同步更新UI
内容页使用@prop修饰变量,在tab页中把数据作为参数传过去内容页