报一个HarmonyOS鸿蒙Next UI问题

报一个HarmonyOS鸿蒙Next UI问题

代码示例

@Builder
export function buyFunction(): void {
  buyComponent()
}

@Builder
export function sellFunction(): void {
  sellComponent()
}

@Component
export struct buyComponent {
  build() {
    TabContent() {
      Text("base")
    }.tabBar("buy")
  }
}

@Component
export struct sellComponent {
  build() {
    TabContent() {
      Text("base")
    }.tabBar("sell")
  }
}

@Component
export struct TradeTestPage {
  private tabContentArr: WrappedBuilder<[]>[] = [wrapBuilder(buyFunction), wrapBuilder(sellFunction)]

  build() {
    Column() {
      TradeAllContainerComponent({ tabContentArr: this.tabContentArr })
      TradeBaseRouterComponent()
    }
  }
}

@Component
export struct TradeAllContainerComponent {
  private params: Record<ESObject, ESObject> = {}
  private tabContentArr: WrappedBuilder<[]>[] = []

  build() {
    NavDestination() {
      Tabs({ barPosition: BarPosition.Start }) {
        ForEach(this.tabContentArr, (wrapbuilder: WrappedBuilder<[]>) => {
          wrapbuilder.builder()
        })
      }
    }.width('100%')
  }
}

问题描述

以上代码有一个bug,就是进入页面后tabs只展现了一个tab,但是可以滚动,然后滚动到底以后突然就变成了两个tab。如果buyFunction里面不套用component直接写TabContent也是没问题的,但是我需要把代码封装起来,不太可能在一个buyFunction里面强行写这么多UI。


更多关于报一个HarmonyOS鸿蒙Next UI问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

好的,我们再复现一下

Tabs不支持自定义组件作为子组件, 仅可包含子组件TabContent, 以及渲染控制类型if/else和ForEach, 并且if/else和ForEach下也仅支持TabContent, 不支持自定义组件。

哦 我理解了,测试了一下,把TabContent挪到tabs里面去就正常了

@Component
export struct buyComponent{
build() {
Text("base")
}
}

更多关于报一个HarmonyOS鸿蒙Next UI问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,UI问题可能涉及布局、组件渲染或交互逻辑。常见的UI问题包括布局错乱、组件无法正常显示、点击事件不响应等。这些问题可能与ArkUI框架的使用有关,例如使用了不兼容的组件属性或未正确设置布局约束。开发者应检查UI描述文件(如.ets文件),确保组件的属性和事件绑定符合规范。此外,注意使用ArkUI提供的布局容器(如FlexColumnRow)时,需正确设置子组件的排列方式和尺寸。如果问题涉及动画或过渡效果,确保使用了ArkUI支持的动画API,并检查动画参数是否合理。

在HarmonyOS鸿蒙Next中,UI问题可能涉及布局、组件兼容性或性能优化。建议检查以下几点:

  1. 布局适配:确保使用了FlexGrid等响应式布局,适配不同设备尺寸。

  2. 组件兼容性:确认使用的组件(如ButtonText)在鸿蒙Next中已更新,并遵循最新API规范。

  3. 性能优化:避免过度使用onClick等事件监听,减少UI渲染负担。

  4. 调试工具:使用DevEco Studio的调试工具,检查UI层级和渲染性能。

如有具体问题,提供更多细节以便精准解答。

回到顶部