HarmonyOS 鸿蒙Next 尾随闭包示例代码 previewer 报错

HarmonyOS 鸿蒙Next 尾随闭包示例代码 previewer 报错

文档问题:
尾随闭包示例代码 `previewer` 报错,文档链接:[[@Builder](/user/Builder)-组件化-声明式语法-基于eTS的声明式开发范式-UI开发-基于JS开发-开发-HarmonyOS应用开发](https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-component-based-builder-0000001281480762)

环境信息:
- DevEco Studio 3.0.0.993
- "compileSdkVersion": 8
- "compatibleSdkVersion": 8

问题描述:
尾随闭包示例代码报错,成功过一次,把 `closer` 改掉,又改回来就失败了

实际结果:
`previewer` 报错:

Preview failed. Unable to start the previewer. Open PreviewerLog to check for details .


日志信息:
PreviewerLog:

[Compile Result] ETS:ERROR File: E:/Workspace/HarmonyOS/xxx/entry/src/main/ets/MainAbility/pages/index.ets:60:11 [Compile Result] In the trailing lambda case, ‘CustomContainer’ must have one and only one property decorated with @BuilderParam, and its @BuilderParam expects no parameter. [Compile Result] Compile error occurred. Fix it based on the above message.


示例代码:
```typescript
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
  [@State](/user/State) message: string = 'Hello World'
  [@State](/user/State) customPopup: boolean = false
  [@State](/user/State) text: string = "header"

  build() {
    Row() {
      Column() {
        Divider()
        Column() {
          CustomContainer({
            header: this.text,
          }){
            Column() {
              specificParam("HHH", "FFF")
            }.onClick(() => {
              this.text = "changeHeader"
            })
          }
        }
      }
    }
    .height('100%')
    .backgroundColor($r('app.color.color_background'))
  }
}

[@Component](/user/Component)
struct CustomContainer {
  header: string = "";
  [@BuilderParam](/user/BuilderParam) closer: () => void;

  build() {
    Column() {
      Text(this.header)
        .fontSize(50)
      this.closer()
    }
  }
}

[@Builder](/user/Builder) function specificParam(label1: string, label2: string) {
  Column() {
    Text(label1)
      .fontSize(50)
    Text(label2)
      .fontSize(50)
  }
}

更多关于HarmonyOS 鸿蒙Next 尾随闭包示例代码 previewer 报错的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

楼主您好,从API version 9开始支持自定义组件链式调用尾随闭包写法,可以更新到API version 9后再试。

更多关于HarmonyOS 鸿蒙Next 尾随闭包示例代码 previewer 报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


文档没有说明哦,更新一下,

楼主您好,已有计划,谢谢您的建议。

针对您提出的“HarmonyOS 鸿蒙Next 尾随闭包示例代码 previewer 报错”问题,以下是专业且直接的回答:

在HarmonyOS鸿蒙Next系统中,尾随闭包(Trailing Closure)通常用于简化函数调用的语法,特别是在Swift等语言中较为常见。然而,在HarmonyOS的预览器(previewer)环境中遇到报错,可能是由于多种原因导致的。

  1. 语法错误:首先检查尾随闭包的语法是否正确,包括参数类型、返回值类型是否与预期匹配。

  2. 环境支持:确认HarmonyOS预览器是否支持您正在使用的尾随闭包语法。由于HarmonyOS主要使用Dart或JS等语言,如果示例代码是基于其他语言的语法,可能需要进行转换或调整。

  3. 依赖问题:检查项目中是否缺失必要的依赖库或框架,这些库或框架可能包含支持尾随闭包的关键实现。

  4. 预览器限制:有时预览器可能存在限制或bug,导致某些代码无法正确执行。尝试更新预览器到最新版本,或查看官方文档了解是否有相关限制。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部