HarmonyOS 鸿蒙Next onAppear方法不调用

发布于 1周前 作者 nodeper 最后一次编辑是 5天前 来自 鸿蒙OS

大佬 请问一下控件已经出现在界面上,但是onAppear方法偶发未调用 的原因会有哪些?

@Builder
showSmallOperatePlaceViewBuilder() {
  Stack() {

  }
  .margin({ left: 5, right: 28, bottom: 20 })
  .id('smallOperateView')
  .geometryTransition("operateView")
  .width(55)
  .height(76)
  .backgroundColor('#0000ff')
  .onAppear(() => {
    LogUtils.debug(this.TAG, LoggerTagConst.BIG_OPERATION+"onAppear realFloatWindowShow="+this.realFloatWindowShow)
    setTimeout(() => {
      LogUtils.debug(this.TAG, LoggerTagConst.BIG_OPERATION+"showSmallOperatePlaceViewBuilder realFloatWindowShow="+this.realFloatWindowShow)
      this.realFloatWindowShow = true
      this.isClickBig = false;
    }, this.isClickBig ? this.FIRST_ANIMATION_SET_TIME : 0)

  })
}

更多关于HarmonyOS 鸿蒙Next onAppear方法不调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

根据提供的部分代码,尝试着写了一个demo,暂未复现描述的问题,这边看下
this.realFloatWindowShow = true,this.isClickBig = false;
这两句代码

深色代码主题
复制
import { promptAction } from '@kit.ArkUI'
@Entry
@Component
struct Index {
  private customDialogComponentId: number = 0
  @Builder customDialogComponent() {
    Stack() {
}
.<span class="hljs-title function_">margin</span>({ <span class="hljs-attr">left</span>: <span class="hljs-number">5</span>, <span class="hljs-attr">right</span>: <span class="hljs-number">28</span>, <span class="hljs-attr">bottom</span>: <span class="hljs-number">20</span> })
.<span class="hljs-title function_">id</span>(<span class="hljs-string">'smallOperateView'</span>)
.<span class="hljs-title function_">geometryTransition</span>(<span class="hljs-string">"operateView"</span>)
.<span class="hljs-title function_">width</span>(<span class="hljs-number">55</span>)
.<span class="hljs-title function_">height</span>(<span class="hljs-number">76</span>)
.<span class="hljs-title function_">backgroundColor</span>(<span class="hljs-string">'#0000ff'</span>)
.<span class="hljs-title function_">onAppear</span>(<span class="hljs-function">() =&gt;</span> {
  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">info</span>(<span class="hljs-string">'====================onAppear'</span>)
  <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
    <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">'====================realFloatWindowShow'</span>);
  }, <span class="hljs-number">1000</span>);
})

}

build() { Row() { Column({ space: 20 }) { Text(‘组件内弹窗’) .fontSize(30) .onClick(() => { promptAction.openCustomDialog({ builder: () => { this.customDialogComponent() }, onWillDismiss: (dismissDialogAction: DismissDialogAction) => { console.log(“dialog onWillDismiss”) if (dismissDialogAction.reason == DismissReason.PRESS_BACK) { dismissDialogAction.dismiss() } if (dismissDialogAction.reason == DismissReason.TOUCH_OUTSIDE) { dismissDialogAction.dismiss() } } }).then((dialogId: number) => { this.customDialogComponentId = dialogId }) }) } .width(‘100%’) } .height(‘100%’) } }

更多关于HarmonyOS 鸿蒙Next onAppear方法不调用的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,onAppear 方法通常用于页面或组件出现在视图树中时的生命周期回调。如果 onAppear 方法不调用,可能存在以下原因:

  1. 页面或组件未正确加载:检查页面或组件是否被正确引入并实例化。确保在视图树的正确位置添加,并且没有被条件渲染(如 if 语句)所隐藏。

  2. 生命周期管理onAppear 依赖于页面的生命周期管理。如果页面被其他页面覆盖或暂停,可能影响到 onAppear 的触发。确保页面处于激活状态。

  3. 异步数据加载:如果页面依赖于异步数据加载,onAppear 可能在数据加载完成前已经执行。虽然这通常不影响 onAppear 的调用,但可能影响页面表现。

  4. 系统或框架问题:在某些情况下,可能是鸿蒙系统或框架的bug导致。检查是否有最新的系统或框架更新,或是否有相关的已知问题报告。

  5. 代码错误:检查 onAppear 方法内的代码,确保没有抛出异常或错误,这可能导致方法提前退出。

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

回到顶部