HarmonyOS @Builder的内容如何刷新
/**
标题栏在线状态区域内容
*/
@ObservedV2
export class AIOTitleOnlineStatusItem {
builder: WrappedBuilder<[AIOTitleOnlineStatusItem]> | undefined = undefined;
@Trace title: string = ‘’;
@Trace subTitle: string = ‘’;
}
/**
标题栏更新的数据实体
*/
@ObservedV2
export class AIOTitleModel {
@Trace title: string = ‘’;
@Trace unreadCnt: number = 0;
@Trace memberCnt: number = 0;
@Trace onlineStatusItem: AIOTitleOnlineStatusItem | undefined = undefined;
}
const TAG = ‘TroopAIOTitleComponent’;
@Extend(Text) function navigationTextStyle() {
.lineHeight(24)
.fontColor(Color.Black)
.fontSize(17)
.textAlign(TextAlign.Start)
.fontWeight(500)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.maxLines(1)
}
@Builder
export function getOnlineStatusBuilder(statusItem: AIOTitleOnlineStatusItem) {
Row() {
Text(statusItem.title).lineHeight(16)
.fontSize(12)
Text(statusItem.subTitle).lineHeight(16)
.fontSize(12)
}.width(‘100%’)
.align(Alignment.Start)
.height(20)
}
const model: AIOTitleModel = new AIOTitleModel();
@Entry
@Component
export struct Test {
aboutToAppear(): void {
model.title = ‘测试标题’;
model.unreadCnt = 25;
}
build() {
Column() {
TitleComponent()
Button(‘点击变更title内容’).onClick(() => {
if (model.onlineStatusItem != undefined) {
model.onlineStatusItem.title += ‘11’;
model.onlineStatusItem.builder = wrapBuilder(getOnlineStatusBuilder)
// model.onlineStatusItem.builder = wrapBuilder(getOnlineStatusBuilder({ paramsItem: this.onlineStatusItem }))
} else {
model.onlineStatusItem = {
builder: wrapBuilder(getOnlineStatusBuilder),
// builder: wrapBuilder(getOnlineStatusBuilder({ paramsItem: this.onlineStatusItem })),
title: ‘当前在线’,
subTitle: ‘-test’
};
}
}).margin({
top: 20
})
}.alignItems(HorizontalAlign.Center)
}
}
@Component
export struct TitleComponent {
build() {
// 内容区域
Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start, alignContent: FlexAlign.SpaceEvenly }) {
// 昵称
Text() {
// 左边的小耳朵
Span(“TitleComponent”)
// 标题
Span(model.title)
// 右边的小耳朵
// 群成员数量
Span((${model.memberCnt}))
}.navigationTextStyle()
.alignSelf(ItemAlign.Start)
.width('60%')
.backgroundColor(Color.Pink)
// 在线状态
if (model.onlineStatusItem != undefined) {
model.onlineStatusItem.builder?.builder(model.onlineStatusItem)
}
}.height(44)
.alignSelf(ItemAlign.Center)
.backgroundColor(Color.Yellow)
}
}
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS @builder方法的ui不刷新
606浏览 • 1回复 待解决
HarmonyOS @Builder UI刷新问题
382浏览 • 1回复 待解决
HarmonyOS BuilderParam传入的Builder方法刷新问题
209浏览 • 1回复 待解决
HarmonyOS TabContent内容如何手动刷新
306浏览 • 1回复 待解决
HarmonyOS 如何刷新页面内容
270浏览 • 1回复 待解决
HarmonyOS @State状态量刷新、@Builder不会响应变化
405浏览 • 0回复 待解决
#鸿蒙通关秘籍#如何使用@Builder自定义菜单内容
511浏览 • 1回复 待解决
HarmonyOS 在@builder中使用引用传递无法触发UI刷新
290浏览 • 1回复 待解决
HarmonyOS Builder组件嵌套调用时,每个Builder都需要包一层引用才能刷新,有没有更好的办法?
509浏览 • 1回复 待解决
HarmonyOS builder 作为 builder 的参数传递
373浏览 • 1回复 待解决
HarmonyOS 如何使用全局的Builder
237浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何根据鸿蒙卡片的状态动态刷新不同内容?
465浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何通过message事件刷新鸿蒙OS卡片中的内容
539浏览 • 1回复 待解决
HarmonyOS 想在builder中插入builder
294浏览 • 1回复 待解决
HarmonyOS 自定义builder方法, 参数是按引用传递, 当状态值修改时, 不触发builder方法, 不会刷新UI
816浏览 • 1回复 待解决
HarmonyOS 想要通过@State修饰的变量刷新@Builder方法内的UI,只能通过引用传递参数吗?
498浏览 • 1回复 待解决
HarmonyOS log真机调试日志刷新太多,需要的内容不好查找
603浏览 • 1回复 待解决
HarmonyOS 关于对象数组内容变更不会引起UI刷新
868浏览 • 0回复 待解决
HarmonyOS WrappedBuilder的使用。如何动态更新全局@Builder
865浏览 • 1回复 待解决
如何做到,每次打开服务中心的时候去刷新一次卡片内容?
7260浏览 • 2回复 待解决
#鸿蒙学习大百科#如何向RichEditor文本框中添加一个@Builder修饰的内容?
548浏览 • 1回复 待解决
HarmonyOS 使用@builder和@builderParam时,@builder中的ui不会动态更新
1017浏览 • 1回复 待解决
HarmonyOS promptAction.openCustomDialog 里面的builder内容无法通过expandSafeArea,扩充到安全区域,希望内容视图可以挨着最底边
150浏览 • 1回复 待解决
HarmonyOS 按Refresh组件示例代码,在不刷新的常规场景时候,builder内的组件也会露出一半
666浏览 • 1回复 待解决
HarmonyOS bindSheet的builder对于Component无效
190浏览 • 1回复 待解决
@ObservedV2 需要 new 出来,不能直接赋值。