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
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

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

@BuilderParam closer: => void = this.closerBuilde
build() {
  Column(){
    this.closer();
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 自定义组件使用
36浏览 • 1回复 待解决
HarmonyOS 自定义组件问题
636浏览 • 1回复 待解决
自定义组件onMeasureSize使用
560浏览 • 1回复 待解决
自定义装饰器使用问题
931浏览 • 1回复 待解决
自定义弹窗使用相关问题
1140浏览 • 1回复 待解决
HarmonyOS 自定义弹框组件问题
646浏览 • 1回复 待解决
HarmonyOS @BuilderParam使用问题
93浏览 • 1回复 待解决
HarmonyOS 定义自定义组件
211浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
727浏览 • 1回复 待解决
HarmonyOS WebView使用自定义键盘问题
283浏览 • 1回复 待解决
HarmonyOS 自定义弹窗问题
908浏览 • 1回复 待解决