uniapp进行微信小程序开发,使用navigateBack返回到上一个页面时候,接口未刷新。

代码背景:

使用uniapp进行微信小程序开发时,有a和b两个页面,从a进入b页面后,通过uni.navigateBack()方法返回a页面时候,无法触发a页面的onShow函数里面的接口调用。

解决思路

uniapp官网页面通信

1.通过EventChannel方法进行页面通信。

因为使用的是vue3的方法,所以只贴vue3的源码

javascript 复制代码
前往到test页面
uni.navigateTo({
  url: '/pages/test?id=1',
  events: {
    // 为指定事件添加一个监听器,获取被打开页面传送到当前页面的数据
    acceptDataFromOpenedPage: function(data) {
      console.log(data)
    },
    someEvent: function(data) {
      console.log(data)
    }
    ...
  },
  success: function(res) {
    // 通过eventChannel向被打开页面传送数据
    res.eventChannel.emit('acceptDataFromOpenerPage', { data: 'data from starter page' })
  }
})

//在test页面进行接收

 onMounted(() => {
    const instance = getCurrentInstance().proxy
    const eventChannel = instance.getOpenerEventChannel();

    eventChannel.emit('acceptDataFromOpenedPage', {
      data: 'data from test page'
    });

    eventChannel.emit('someEvent', {
      data: 'data from test page for someEvent'
    });

    eventChannel.on('acceptDataFromOpenerPage', function(data) {
      console.log('acceptDataFromOpenerPage', data)
    })
  })
//onShow onLoad方法都是一样的。

可能我暂时还未遇到此种场景。已经到了b页面,为什么还要去把b页面的值传输给a页面呢,不是很理解。但是把a页面的值传入到b页面,还是很有用的。如果不使用navigateBack,选择redirectTo或者navigateTo方法都是可以进行通信,并且是重新触发show函数的。这样做有点复杂。

我们还是更想使用navigateBack进行触发回调处理。

注意:注意:注意:
getOpenerEventChannel 只能在非首页和通过 uni.navigateTo 或 uni.redirectTo 打开的页面中使用。如果你是在首页或其他不支持的场景中使用,它将不可用。

2.通过uni. on 和 uni. emit的方法的方法进行传值和触发函数

首先在b页面进行emit的数据传递,在调用navigateBack方法之前,进行 emit方法

javascript 复制代码
 uni.$emit('refreshData', state.info);
 uni.navigateBack();

在a页面的onLoad函数内进行$on的接收

javascript 复制代码
    uni.$on('refreshData', (val) => {
      console.log(val);
      //可以获取b页面的数据
      //也可以进行a页面接口的重新触发
      loadData();
    })

这样就可以解决使用navigateBack返回到上一个页面时候,接口未刷新的问题。

相关推荐
一 乐1 小时前
健身达人小程序|基于java+vue健身达人小程序的系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序
行云流水6267 小时前
uniapp pinia实现数据持久化插件
前端·javascript·uni-app
zhangyao9403307 小时前
uniapp动态修改 顶部导航栏标题和右侧按钮权限显示隐藏
前端·javascript·uni-app
2501_9160074710 小时前
iOS 压力测试的工程化体系,构建高强度、多维度、跨工具协同的真实负载测试流程
android·ios·小程序·uni-app·cocoa·压力测试·iphone
千寻技术帮10 小时前
50035_基于微信小程序的民宿管理系统
微信小程序·源码·ppt·源代码管理·项目文档·民宿
小小王app小程序开发11 小时前
盲盒抽赏小程序拓展分析:6 大具体玩法设计,破解同质化困局
小程序
说私域11 小时前
智能名片链动2+1模式S2B2C商城小程序:构建私域生态“留”量时代的新引擎
大数据·人工智能·小程序
说私域11 小时前
基于开源AI大模型与AI智能名片S2B2C商城小程序的直播简介引流策略研究——以B站直播为例
人工智能·小程序
说私域11 小时前
开源AI大模型、AI智能名片与S2B2C商城小程序在互联网与传统行业融合中的应用与影响
人工智能·小程序·开源
2501_9160088912 小时前
API接口调试全攻略 Fiddler抓包工具、HTTPS配置与代理设置实战指南
前端·ios·小程序·https·fiddler·uni-app·webview