HarmonyOS 鸿蒙Next:主页向第二页传递数据后,第二页使用router.back返回主页并传递数据,主页应该如何加载数据

发布于 1周前 作者 vueper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:主页向第二页传递数据后,第二页使用router.back返回主页并传递数据,主页应该如何加载数据

import router from ‘@ohos.router’;

@Entry

@Component

struct Index {

  @State src: string = ‘’;

  onPageShow() {

    this.src = (router.getParams() as Record<string, string>)[‘src’];

  }

  // 页面刷新展示

  …

}

华为官方给出的这段代码是不是有问题,主页第一次加载的时候根本加载不到src这个属性,会报错

6 回复
 回调方法 :
router.back({
url:'pages/Index',
params:{
src: "Second传递过来的数据"
}
})

接收方法:

[@State](/user/State) txxt:string='';

onPageShow(){

this.txxt = (router.getParams() as Record<string, string>)['src'];
}

这里this.txxt会报错  建议使用 

onPageShow(){

this.txxt = router.getParams()?.['src'];

}

Record为空时,读取src当然会报错,加个前置判断就好了,或者处理异常

接收数据没有问题,但是这个数据解析完了,如何清除,后台切前台,这个数据又要重新处理一遍

请问这个问题是怎么解决的

定义一个变量,跳转时把这个变量带上,返回的时候判断这个变量值是不是一样的,一样的就进行处理并让这个变量增1,不一样就不去处理接收参数

在HarmonyOS开发中,若主页向第二页传递数据后,第二页使用router.back()返回并希望传递数据回主页,主页可通过几种方式加载这些数据:

  1. 使用页面状态管理:在主页中设置一个全局或局部状态来存储从第二页返回的数据。当第二页通过router.back()携带数据返回时,可以在主页的onPageBack或类似生命周期函数中检测并更新这个状态。

  2. 通过事件总线或观察者模式:如果页面间通信较为复杂,可使用事件总线(Event Bus)或实现观察者模式来在主页监听来自第二页的事件和数据。

  3. 利用页面启动参数:虽然router.back()不直接支持传递数据,但可以在主页的启动参数中预留一个标识符或标志位,主页通过此标识符在返回时主动从数据源重新加载或更新数据。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部