@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都需要包一层引用才能刷新,有没有更好的办法?
359浏览 • 1回复 待解决
HarmonyOS @builder引用传递问题
421浏览 • 0回复 待解决
process调用时构建异常
470浏览 • 1回复 待解决
HarmonyOS 在@builder中使用引用传递无法触发UI刷新
101浏览 • 1回复 待解决
HarmonyOS flutter plugin引用时git报错
348浏览 • 1回复 待解决
HarmonyOS @Builder 按引用传递参数编译错误
309浏览 • 1回复 待解决
HarmonyOS 如何使用全局的Builder
147浏览 • 1回复 待解决
HarmonyOS 使用全局 @Builder 应用 crash
64浏览 • 1回复 待解决
HarmonyOS 自定义builder方法, 参数是按引用传递, 当状态值修改时, 不触发builder方法, 不会刷新UI
677浏览 • 1回复 待解决
HarmonyOS 使用@builder和@builderParam时,@builder中的ui不会动态更新
754浏览 • 1回复 待解决
谁有办法关闭电池使用时间
6192浏览 • 1回复 待解决
HarmonyOS 想在builder中插入builder
189浏览 • 1回复 待解决
napi_call_function调用时除了会有pending exception外,是否还有其他异常场景
2120浏览 • 1回复 待解决
HarmonyOS builder 作为 builder 的参数传递
218浏览 • 1回复 待解决
HarmonyOS WrappedBuilder的使用。如何动态更新全局@Builder
743浏览 • 1回复 待解决
HarmonyOS Swiper使用时Indicator设置位置不生效
833浏览 • 1回复 待解决
HarmonyOS 如何实现类似$r, 使用时不用import
173浏览 • 1回复 待解决
HarmonyOS 想要通过@State修饰的变量刷新@Builder方法内的UI,只能通过引用传递参数吗?
278浏览 • 1回复 待解决
HarmonyOS builder按引用传参数时可以用哪些装饰器对应的状态变量
250浏览 • 1回复 待解决
HarmonyOS 使用scroll组件效果异常
128浏览 • 1回复 待解决
HarmonyOS 使用navDestination报类型异常
41浏览 • 1回复 待解决
什么是@Builder装饰器为什么要使用他?
782浏览 • 1回复 待解决
HarmonyOS 在builder中使用自定义组件报错
688浏览 • 1回复 待解决
HarmonyOS List是否允许使用@Builder作为其子组件
204浏览 • 1回复 待解决
HarmonyOS 使用PersistentStorage存储持久化时,读取正常,调用时undefined
523浏览 • 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)