@Builder使用引用时异常
需要异步获取字符串,并将字符串转成Span展示,因此做了一个通用的SpanBuilder解决代码复用问题。
export enum TextSpanType {
text,
link
}
export interface TextSpanAttribute {
text: string
type: TextSpanType,
}
export class TextSpanList {
spans: TextSpanAttribute[]
constructor(arr: TextSpanAttribute[]) {
this.spans = arr
}
}
@Builder
export function DTTextSpanBuilder($$: TextSpanList) {
if ($$.spans !== undefined) {
ForEach($$.spans, (item: TextSpanAttribute) => {
Span(item.text)
})
}
}
//使用的Commonent代码:
@Component
export struct PrivacyPage {
@State
private spans: TextSpanList = new TextSpanList([])
aboutToAppear() {
setTimeout(() =>{
//循环生成list
this.spans = new TextSpanList(list)
}, 1000)
}
build() {
Column() {
Text() {
// 这一段代码能正常生效
if (this.spans !== undefined) {
ForEach(this.spans.spans, (item: TextSpanAttribute) => {
Span(item.text)
})
}
// 这个代码不生效,渲染异常
DTTextSpanBuilder(this.spans)
}
}
}
请指出使用上的问题,为何不生效。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS Builder组件嵌套调用时,每个Builder都需要包一层引用才能刷新,有没有更好的办法?
156浏览 • 1回复 待解决
process调用时构建异常
234浏览 • 1回复 待解决
HarmonyOS 自定义builder方法, 参数是按引用传递, 当状态值修改时, 不触发builder方法, 不会刷新UI
310浏览 • 1回复 待解决
谁有办法关闭电池使用时间
5903浏览 • 1回复 待解决
napi_call_function调用时除了会有pending exception外,是否还有其他异常场景
1739浏览 • 1回复 待解决
HarmonyOS WrappedBuilder的使用。如何动态更新全局@Builder
462浏览 • 1回复 待解决
HarmonyOS 在builder中使用自定义组件报错
163浏览 • 1回复 待解决
HarmonyOS Swiper使用时Indicator设置位置不生效
411浏览 • 1回复 待解决
什么是@Builder装饰器为什么要使用他?
332浏览 • 1回复 待解决
HarmonyOS 使用PersistentStorage存储持久化时,读取正常,调用时undefined
242浏览 • 1回复 待解决
builder修饰的快速组件化方法能使用Button吗
1905浏览 • 0回复 待解决
@Extend、@Styles、@Builder 区别?
325浏览 • 1回复 待解决
系统日历方法使用会抛异常
352浏览 • 0回复 待解决
使用TextPicker控件显示异常的问题
745浏览 • 1回复 待解决
手机绑定了屏幕使用时间还可以升级鸿蒙系统吗
6157浏览 • 1回复 待解决
使用LazyForEach嵌套LazyForEach(或ForEach)显示异常。
691浏览 • 1回复 待解决
HarmonyOS 数据库的beginTrans使用异常
34浏览 • 1回复 待解决
HarmonyOS 使用promptAction.openCustomDialog创建自定义弹窗builder怎么传参
235浏览 • 1回复 待解决
使用DevEco studio调试应用时,经常无法打印日志怎么回事?
6802浏览 • 1回复 待解决
可以全局定义一个@Builder方法布局,并进行使用吗?
135浏览 • 1回复 待解决
如何使用DFX的ErrorManager来捕获js异常?
710浏览 • 1回复 待解决
使用“按引用传递参数”编译器CodeCheck报错
106浏览 • 1回复 待解决
HarmonyOS 如何使用BusinessError设置code码并抛出异常?
75浏览 • 1回复 待解决
HarmonyOS 在Page内使用方法调用方法异常
437浏览 • 1回复 待解决
HarmonyOS 关于使用获取屏幕截图接口异常的问题
427浏览 • 1回复 待解决
只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数。即如下写法:
这种写法叫做对象字面量,可行:DTTextSpanBuilder({spans: this.spans.spans})
先new一个实例,再传入,不行:this.spans = new TextSpanList(list)DTTextSpanBuilder(this.spans)
另外,上面第一种写法有限制:@Builderexport function DTTextSpanBuilder($$: TextSpanList) {}入参的类型TextSpanList,这个类不能有构造函数,否则对象字面量的写法会报语法错误:Object literal must correspond to some explicitly declared class or interface (arkts-no-untyped-obj-literals)