HarmonyOS 鸿蒙Next 返回上级页面刷新问题

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

HarmonyOS 鸿蒙Next 返回上级页面刷新问题 使用如下方式跳转后
this.pathStack.pushPathByName('LoginPage','',(onPop)=>{},true)

在LoginPage页面操作完成调用this.pathStack.pop(true,true)返回并没有进入onPop的回调。

3 回复

参考下:

//Index.ets

import { pageTwoTmp, Pages } from './PageTwo'

class TmpClass{
  count:number = 10
}
@Entry
@Component
struct NavigationExample {
  @Provide('pageInfo') pageInfo: NavPathStack = new NavPathStack()
  @State message: string = '做一个简单的测试'
  @Builder
  PageMap(name: string) {
    if (name === 'pageTwo') {
      pageTwoTmp({ names: name, values: this.pageInfo } as Pages)
    }
  }
  build() {
    Navigation(this.pageInfo) {
      Column() {
        Button('pushPathByName', { stateEffect: true, type: ButtonType.Capsule })
          .width('80%')
          .height(40)
          .margin(10)
          .onClick(() => {
            let tmp = new TmpClass()
            this.pageInfo.pushPathByName('pageTwo', tmp, (popInfo)=>{
              console.info("一大堆测试的数据")
              this.message = '[pushPathByName]last page is: ' + popInfo.info.name + ', result: ' + JSON.stringify(popInfo.result);
            }); // 将name指定的NavDestination页面信息入栈,传递的数据为param,添加接收处理结果的onPop回调。
          })
      }
    }.title('NavIndex').navDestination(this.PageMap)
  }
}

PageTwo.ets

export class Pages {
  names: string = ""
  values: NavPathStack | null = null
}

class resultClass {
  constructor(count: number) {
    this.count = count;
  }
  count: number = 10
}

@Builder
export function pageTwoTmp(info: Pages) {
  NavDestination() {
    Column() {
      Text("测试")
      Button('Back').onClick(() => {
        (info.values as NavPathStack).pop(new resultClass(0));
      })
    }.width('100%').height('100%')
  }.title('pageTwo')
  .onBackPressed(() => {
    (info.values as NavPathStack).pop(new resultClass(0)); // 回退到上一个页面,将处理结果传入push的onPop回调。
    return true;
  })
}

更多关于HarmonyOS 鸿蒙Next 返回上级页面刷新问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你试试这个:

this.pathStack.pop('');

针对HarmonyOS鸿蒙Next系统中返回上级页面刷新问题,以下是专业解答:

在HarmonyOS应用中,当用户从当前页面返回上级页面时,若上级页面需要刷新以显示最新数据,通常需通过页面生命周期管理或事件通知机制来实现。

  1. 页面生命周期:利用页面的onResumeonActive等生命周期方法,在返回上级页面时触发数据刷新逻辑。这要求开发者在编写页面代码时,确保在适当的生命周期阶段调用数据刷新函数。

  2. 事件总线:使用事件总线(Event Bus)机制,在子页面进行数据变更后,通过事件总线通知上级页面进行刷新。这种方式适用于跨页面通信和数据同步。

  3. 状态管理:采用全局状态管理框架(如Vuex、Redux等类似思想在HarmonyOS中的实现),将需要共享的状态提升到全局状态管理中,页面通过订阅状态变化来自动刷新。

  4. 导航管理:在自定义导航管理器中,维护页面栈和页面状态,当页面返回时,根据页面栈中的状态决定是否触发刷新逻辑。

若以上方法仍无法解决您的返回上级页面刷新问题,请检查页面间数据传递是否正确、生命周期方法是否被正确调用,以及是否存在其他潜在的系统或应用级问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部