uniapp:通知上一页刷新,有这么几个方式
在使用uniapp开发的过程中,我相信,我们都一定遇见过如下的场景:
进入了一个列表页,列表页进入详情页,在详情页进行了一些操作,比如,删除,修改,编辑,提交,成功之后返回到列表页,那么这个时候,如果我们的列表页不进行数据的刷新,就会给用户一种错觉,我刚才进行操作的那条数据会不会没成功,我们下拉刷新下列表,这个数据就变成最新的了,这个是很常见的一个交互场景,那么如何不让用户进行下拉刷新或者重新进入列表页的操作,我提供几种比较常用的做法
onShow:简单粗暴,但是却有缺陷
使用onShow可能是最简单的写法 ,我们只需要将请求的方法,放在onShow里面执行即可,onShow是这么的一个生命周期,用法超级简单,但是却有着比较大的缺陷,例如:我点进了详情,但是我什么都不做,而后返回列表页,这个时候,依然进行了一个getList方法的执行,重新进行了请求,合理吗?很显然不合理!怎么办?
页面通讯:uni.on
这个可能是我用的最多的方式,页面简介 | uni-app官网
用法其实也比较简单,在列表页中的onLoad周期中进行事件的监听,在详情页面中进行emit事件的发射,需要注意的一点是,需要在页面卸载的周期内,把自定义的事件off掉
uni.navigateTo():events的使用
可能啊,我们大多数都只是使用这个路由api进行页面跳转,向下个页面传递个参数之类的,其实如果认证观看文档,会发现这个路由api有妙用;uni.navigateTo(OBJECT) | uni-app官网
返回上一页并刷新
let pages = getCurrentPages(); // 当前页面
let beforePage = pages[pages.length - 2]; // 上一页
uni.navigateBack({
success: function() {
beforePage.onLoad(); // 执行上一页的onLoad方法
}
});
说明:
- 在uniapp 中 getCurrentPages() 方法获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
- pages[pages.length - 1],为当前页。(因为数组下标从0开始,所以需要减1)
- let beforePage = pages[pages.length - 2],为获取上一页
- uni.navigateBack() 为返回上一页
- beforePage.onLoad()为调用上一页的onLoad方法
- 上面代码的含义为:当返回上一页的方法执行成功后,调用上一页的onLoad方法。
如此,基本上就是如何使上一页刷新的几个方法,赶紧选一种用吧! 版权声明:本文为CSDN博主「sayyy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:blog.csdn.net/sayyy/artic…