uni-app 返回(后退)上一页并刷新

说明

A页面调用 uni.navigateTo 显示 B页面
B页面调用 uni.navigateBack 后退到A页面,并让A页面重写加载数据

应用场景

点击按钮时后退并刷新

不适合场景

  • Android侧滑后退
  • Android 实体返回键
  • IOS 左滑后退
  • 顶部导航栏左边的返回按钮

原理

在 B 页面,navigateBack成功回调函数中,发射自定义事件

在 A 页面,navigateTo 中增加监听该自定义事件,监听到该事件,就刷新数据

A页面

uni.navigateTo({
    url: 'note/list?tid='+tid,
    events: {
        // 监听 navReloadEvent自定义 事件
        navReloadEvent:(data) => {
            // console.log("navReloadEvent:",data)
            this.isPullDownRefresh = true
            // 调用下拉刷新
            uni.startPullDownRefresh();

            this.getNotes()
        }
    }
});

B页面

uni.navigateBack({
    delta: 1,
    success: () => {
        const eventChannel = this.getOpenerEventChannel();
        // 发射 navReloadEvent 自定义时间,可传递数据
        eventChannel.emit('navReloadEvent',1);
    }
});