HarmonyOS鸿蒙Next中用路由的replace,同一个页面替换,参数变了而已,感官上还是同一个页面。为什么页面会先执行onAppear,然后执行了onDisAppear。

HarmonyOS鸿蒙Next中用路由的replace,同一个页面替换,参数变了而已,感官上还是同一个页面。为什么页面会先执行onAppear,然后执行了onDisAppear。 用路由的replace,同一个页面替换,参数变了而已,感官上还是同一个页面。为什么页面会先执行onAppear,然后执行了onDisAppear。

4 回复

使用的是Navigation呢。我只好改成不用导航切换了,就直接重置参数,重新初始化页面。

更多关于HarmonyOS鸿蒙Next中用路由的replace,同一个页面替换,参数变了而已,感官上还是同一个页面。为什么页面会先执行onAppear,然后执行了onDisAppear。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


楼主您是用的router来进行路由导航切换的吗?目前更推荐使用Navigation来搭建应用的路由导航呢

在HarmonyOS鸿蒙Next中,使用replace进行页面替换时,虽然参数发生了变化,但页面的生命周期仍然会按照正常的流程执行。具体表现为:当replace操作触发时,当前页面会先执行onDisAppear,然后新的页面(即使视觉上看起来是同一个页面)会执行onAppear

这是因为replace操作本质上是在导航栈中替换当前页面的实例,而不是简单的参数更新。因此,系统会认为当前页面已经消失,新的页面(尽管视觉上相同)正在出现,从而触发相应的生命周期回调。这种行为是为了确保页面状态和生命周期的正确管理,即使参数变化,系统也会视为一个新的页面实例。

在HarmonyOS鸿蒙Next中,使用路由的replace方法替换同一个页面时,虽然页面看起来没有变化,但实际上是销毁了当前页面实例并创建了一个新的实例。因此,系统会先执行旧页面的onDisAppear生命周期回调,表示旧页面即将消失;然后执行新页面的onAppear回调,表示新页面已经显示。这种设计确保了页面状态和参数的更新能够正确反映在UI上。

回到顶部