HarmonyOS @BuilderParam结合自定义组件时的使用问题

基于@BuilderParam的Container是有尾随闭包的形式插桩子内容时,当字内容为自定义组件时候,在Container的onDidBuild事件中获取不到frameNode,当给自定义控件设置id属性后能获取到自定义控件,但是setOnVisibleAreaApproximateChange不进行触发。预期效果Container1下需兼容系统组件以及自定义组件在Container1内动态绑定setOnVisibleAreaApproximateChange方法。

以下为示例:

import { FrameNode } from '@kit.ArkUI'

@Entry
@Component
struct TestPage {
  build() {
    Column() {
      // 获取不到 frameNode
      Container1({ idx: '1' }) {
        Component1()
      }

      // 正常
      Container1({ idx: '2' }) {
        Text('Hello')
      }

      // 正常
      Container1({ idx: '3' }) {
        Column() {
          Component1()
        }
      }

      // 能获取到 frameNode 类型为 __Common__ 但是 setOnVisibleAreaApproximateChange 无效。
      Container1({ idx: '4' }) {
        Component1().id('')
      }
    }
  }
}

@Component
struct Component1 {
  build() {
    Text('Hello')
  }
}

@Component
export struct Container1 {
  @Prop idx: string;

  @Builder
  closerBuilder() {
  }

  @BuilderParam closer: () => void = this.closerBuilder

  build() {
    this.closer();
  }

  onDidBuild(): void {
    let uniqueId = this.getUniqueId();
    let frameNode: FrameNode | null = this.getUIContext().getFrameNodeByUniqueId(uniqueId);
    console.log(this.idx + '   ' + frameNode?.getNodeType())

    if (frameNode != null) {
      frameNode.commonEvent.setOnVisibleAreaApproximateChange({
        ratios: [0, 1],
        expectedUpdateInterval: 1000
      },
        (isVisible: boolean, currentRatio: number) => {
          console.log(this.idx + ' ' + isVisible + ' ' + currentRatio)
        })
    }
  }
}
HarmonyOS
2025-01-09 16:12:15
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

在自定义组件Container1里加一个column组件,参考示例:

@BuilderParam closer: => void = this.closerBuilde
build() {
  Column(){
    this.closer();
分享
微博
QQ
微信
回复
2025-01-09 19:16:23
相关问题
HarmonyOS 自定义组件使用
270浏览 • 1回复 待解决
HarmonyOS 自定义组件问题
897浏览 • 1回复 待解决
自定义组件onMeasureSize使用
798浏览 • 1回复 待解决
自定义装饰器使用问题
1100浏览 • 1回复 待解决
自定义弹窗使用相关问题
1305浏览 • 1回复 待解决
HarmonyOS @BuilderParam使用问题
220浏览 • 1回复 待解决
HarmonyOS 自定义弹框组件问题
897浏览 • 1回复 待解决
HarmonyOS 定义自定义组件
472浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
1084浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
1198浏览 • 1回复 待解决
HarmonyOS WebView使用自定义键盘问题
443浏览 • 1回复 待解决