在前段数据交互中,可能会碰到由于主页面有数据缓存,个人在修改一些信息后需要刷新加载页面的要求。
下面拿个人的小程序举例子
- 本tab页面内刷新
- 当我进入创建店铺后
- 我希望点击提交后第一个用户店铺页面会出现我新建的店铺,这时我该如何做?
步骤
- 第一个页面内实现下拉刷新
// 个人用的uni-app // 个人在方法中实现了加载选项 methods: { load() { var _this = this; console.log("user_id = " + _this.user_info.user_id); this.req({ url: _this.req_url, data: { 'user_id': _this.user_info.user_id }, success: res => { _this.my_shop_list = res; _this.rep_num = res.length; } }) }, }, onPullDownRefresh() { this.load(); }
- 在第二个创建店铺页面实现第一个店铺页面的刷新,方法有两种
- uni-app
个人在main.js 挂载了如下方法 - 微信小程序
实现如下方法
function() { var page_arr = getCurrentPages(); if (page_arr.length > 0) { // 获得当前页面栈的上一个页面 var before_page = page_arr[page_arr.length - 2]; // 调用上一个页面的刷新方法 before_page.onPullDownRefresh(); }; uni.navigateBack({ }); }
- uni-app
差不多就是这个思路,可以根据自己的需要调整页面栈的索引,也可以使用其他的生命周期函数来实现刷新(不过个人推荐使用这个下拉刷新),至于为何不直接调用methods
内的load()
方法,因为个人没有测试成功(好像是不支持吧~~~,如果有搞出来的,可以评论补充哦!(~ ̄▽ ̄)~ )
从一个tab页面刷新另一个tab页面
- 以本人小程序为例
- 主页面
- 个人中心页面
以下是解决方案
- 如果我要在个人中心修改地址,并且使主页的店铺随着我的地址修改而改变。因为是跨tab,思路都差不多。
- 首先前提是默认进入的是主页
- 个人使用
uni-app
- 在uni-app的App.vue中
globalData: { index_page: null, },
- 在主页中
onload()
生命周期函数中配置getApp().globalData.index_page = getCurrentPages()[0];
- 在地址修改页面配置
// 在修改的函数添加如下代码 getApp().globalData.index_page.onPullDownRefresh();
- 在uni-app的App.vue中