@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
待解决
相关问题
谁有办法关闭电池使用时间
4541浏览 • 1回复 待解决
builder修饰的快速组件化方法能使用Button吗
658浏览 • 0回复 待解决
napi_call_function调用时除了会有pending exception外,是否还有其他异常场景
715浏览 • 1回复 待解决
使用TextPicker控件显示异常的问题
359浏览 • 1回复 待解决
使用@Builder装饰器包含自定义组件的方法与普通方法的区别是什么
780浏览 • 1回复 待解决
使用LazyForEach嵌套LazyForEach(或ForEach)显示异常。
188浏览 • 1回复 待解决
使用DevEco studio调试应用时,经常无法打印日志怎么回事?
5249浏览 • 1回复 待解决
手机绑定了屏幕使用时间还可以升级鸿蒙系统吗
4732浏览 • 1回复 待解决
如何使用DFX的ErrorManager来捕获js异常?
428浏览 • 1回复 待解决
Map中可以存入@Builder修饰的构造函数吗
434浏览 • 1回复 待解决
在DevEco Studio上,出现预览器不能使用时,到底应该如何解决?
1439浏览 • 0回复 待解决
PolarDB异常警告监控指标时序异常检测 (时序异常检测)是什么原因
2139浏览 • 1回复 待解决
打开应用时打开同一进程
1137浏览 • 1回复 待解决
普通的ets文件(工具类)中,引用context类型的变量该如何使用
419浏览 • 1回复 待解决
静态库引用,重复引用,会造成多个静态库打包么?
237浏览 • 1回复 待解决
求助:使用DevEcoStudio2.1.0.301运行CodeLabs 文字识别程序时异常退出。
6014浏览 • 1回复 待解决
backgroud()方法使用@State修饰的状态变量值更新后未能触发不同的@builder方法刷新
673浏览 • 1回复 待解决
引用第三方库文档pullToRefresh时图片资源引用找不到。
312浏览 • 1回复 待解决
打开图库应用时偶尔会闪退
1230浏览 • 0回复 待解决
Redistemplate报nullpointer异常
3335浏览 • 1回复 待解决
请问下,怎么使用icon的图标呢?是下载成png,当图片来引用吗?
1023浏览 • 1回复 待解决
ErrorManager捕获js异常
291浏览 • 1回复 待解决
这行的作用时什么?
1269浏览 • 1回复 待解决
使用DevEco Studio开发鸿蒙应用时通过命令行启动模拟器,提示非法的启动方式
6371浏览 • 1回复 待解决
如何引用非本地目录的HSP
494浏览 • 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)