HarmonyOS 鸿蒙Next @Builder

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next @Builder

我实现的一个半模态的弹窗的评论列表:
bindSheet绑定的是下面的代码:
@Builder
CommentListPageBuilder() {
CommentListPage({
shareParam: this.shareParams,
showCommentListPage: $showCommentListPage
})
}

CommentListPage是我自定义的组件,我直接把CommentListPage放在build中可以正常显示评论的列表,
CommentListPage放在 @Builderh中就无法显示评论列表,我调式发现,在 @Builder中引用自定义的评论列表组件CommentListPage中的@State根本不会刷新UI,需要怎么处理这个问题?

3 回复
@Entry

@Component

struct Index {

  @State v1:string = "3"

  build() {

    Column(){

      this.builder2(this.v1)

      this.builder1()

      Button("测试").onClick(()=>{

        this.v1="1"

      })

    }.justifyContent(FlexAlign.Center)

  }

  @Builder

  builder1() {

    Row(){

      if(this.v1=="1"){

        this.builder2("2")

      }else {

        this.builder2("v1调用")

      }

    }

  }

  @Builder

  builder2(v2:string) {

    Row(){

      Text(v2)

    }

  }

}

首先我们可以知道

[@Builder](/user/Builder)方法中只有两种传递的机制

一种是按照值传递一种是按引用传递

我们要确保他是按引用传递如果CommenListpage这个组件要接受一个对象

这个对象还已经包含了[@State](/user/State)状态的话

要确保这个对象是按引用传递

[@Builder](/user/Builder)
CommentListPageBuilder() {
  CommentListPage({
    shareParam: this.shareParams,
    showCommentListPage: $showCommentListPage
  })
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

要确保this.shareParams和$showCommentListPage是按引用传递

这样他们状态的变化就会触发UI刷新

针对您提到的HarmonyOS 鸿蒙Next @Builder相关问题,这里提供一些基本信息和常见操作要点,帮助您更好地理解和使用这一开发工具。

HarmonyOS 鸿蒙Next @Builder是华为针对鸿蒙系统应用开发提供的集成开发环境(IDE),旨在简化开发流程,提升开发效率。它支持代码编写、调试、测试、打包等全生命周期的开发活动。

在使用@Builder时,您可能需要关注以下几点:

  1. 环境配置:确保您的开发环境符合HarmonyOS的开发要求,包括操作系统版本、内存、存储空间等。
  2. SDK更新:定期检查并更新HarmonyOS的SDK,以确保您使用的是最新版本的开发工具和API。
  3. 项目创建:在@Builder中创建新项目时,选择合适的项目模板和目标设备类型,以便更好地适配您的应用需求。
  4. 代码编写与调试:利用@Builder提供的代码编辑、调试功能,快速定位和解决开发过程中遇到的问题。
  5. 打包与发布:完成开发后,通过@Builder的打包工具将应用打包成符合鸿蒙系统要求的格式,并提交至华为应用市场进行审核和发布。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。希望这些信息对您有所帮助!

回到顶部