HarmonyOS 鸿蒙Next A跳转B页面再回到A页面数据丢失

HarmonyOS 鸿蒙Next A跳转B页面再回到A页面数据丢失 A跳转B页面再回到A页面数据丢失各位大佬怎么解决

12 回复
  1. 你这个userId是局部的属性吗?

  2. 全局属性的userId,可以监察以下disappear中有没有相关置空操作

更多关于HarmonyOS 鸿蒙Next A跳转B页面再回到A页面数据丢失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


好的感谢
我使用sp把userid存了之后 就不会清空了
但是如果比如a页面跳转到b页面的时候携带了数据,然后从b页面跳转到c页面,这时候从c页面 router.back回到b页面之后,a页面传入b页面的数据就消失了,这方面感觉调的back像是从c跳转到b一样,这方面不是很明白。

很喜欢HarmonyOS的卡片式设计,信息一目了然,操作也更便捷。

你不然贴一下相关的代码,正常来说直接back上一个页面不会丢失ui数据

好的感谢
我使用sp把userid存了之后 就不会清空了
但是如果比如a页面跳转到b页面的时候携带了数据,然后从b页面跳转到c页面,这时候从c页面 router.back回到b页面之后,a页面传入b页面的数据就消失了,这方面感觉调的back像是从c跳转到b一样,这方面不是很明白。

突然想到个问题,router.RouterMode.Single你有设置么,

这个方法没有设置。是一定要设置这个方法吗?

A跳转到B,从B页面返回到A。要看你的返回是如何操作,back页面返回,理论上页面的UI数据是不会丢失。你这个再回到A的描述,是不是又跳转到A页面了?

在上个页面的userid就空了,

检查 userid 所有清空的调用时机。back 页面返回,如果 userid 是全局变量是不会导致数据清空。

检查 userid 所有清空的调用时机。back 页面返回,如果 userid 是全局变量是不会导致数据清空。

在HarmonyOS中,当从A页面跳转到B页面再回到A页面时,如果数据丢失,通常是由于页面生命周期管理不当导致的。HarmonyOS的页面生命周期包括onInitonReadyonShowonHideonDestroy等阶段。在页面跳转时,A页面会触发onHide,返回到A页面时会触发onShow。如果数据没有在onShow中重新加载或恢复,可能会导致数据丢失。

解决方法是在A页面的onShow生命周期中重新加载或恢复数据。可以使用@State@Link@StorageLink等装饰器来管理页面状态,确保数据在页面切换时不会丢失。例如,使用@StorageLink可以将数据存储在AppStorage中,页面切换时数据会自动恢复。

此外,确保在页面跳转时使用正确的导航方法,如router.pushrouter.back,以保持页面栈的正确性。如果使用了router.replace,A页面会被销毁,数据也会丢失。

总结,数据丢失问题可以通过合理管理页面生命周期和状态来解决,确保在onShow中恢复数据。

回到顶部