题目形貌:
在利用uniapp开发的过程中,我信赖,我们都肯定遇见过如下的场景:
进入了一个列表页,列表页进入详情页,在详情页进行了一些利用,比如,删除,修改,编辑,提交,乐成之后返回到列表页,那么这个时间,假如我们的列表页不进行数据的革新,就会给用户一种错觉,我刚才进行利用的那条数据会不会没乐成,我们下拉革新下列表,这个数据就酿成最新的了,这个是很常见的一个交互场景,那么怎样不让用户进行下拉革新大概重新进入列表页的利用,我提供几种比力常用的做法!
办理方案
uni-app小程序监听左上角的返回按钮,革新上一个页面的数据
第一种方法:
必要注意的一点是,必要在页面卸载的周期内,把自界说的变乱off掉
- B页面
- onUnload(){
- uni.$emit("getlist",{})//这里可以传个空,也可以传值过去
- uni.navigateBack({ // 返回上一页
- delta: 1
- })
- }
复制代码- A页面
- onShow(){
- uni.$on("getlist", (e)=>{
- this.getwrongtllist();//需要重新访问一下接口。
- })
- },
- // 用这种方法需要清除,负责会一直调用多次接口
- onUnload() {
- // 清除监听
- uni.$off('getlist');
- },
- // 或者有组件的使用不了小程序的生命周期可以使用 beforedestroy
复制代码 第二种方法:
- B页面
- onUnload(){
- var pages = getCurrentPages(); //当前页面栈
- if (pages.length > 1) {
- var beforePage = pages[pages.length - 2]; //获取上一个页面实例对象
- beforePage.data.refreshIfNeeded = true;
- }
- }
复制代码- A页面
- export default {
- data() {
- return {
- refreshIfNeeded: false,
- }
- }
- }
- onShow() {
- var pages = getCurrentPages(); // 获取当前页面栈
- var currentPage = pages[pages.length - 1]; // 当前页面
- if (currentPage.data.refreshIfNeeded) {
- currentPage.data.refreshIfNeeded = false;
- this.mescroll.resetUpScroll(); // 调用列表重置刷新页面
- this.mescroll.scrollTo(0,0); // 滚动页面置顶
- }
- }
复制代码 第三种方法:
- B页面 返回
- payData.success = (res) => {
- uni.showToast({
- title: '支付成功',
- success: () => {
- setTimeout(() => {
- uni.navigateBack();
- }, 2000)
- }
- })
- }
复制代码- A页面 返回的时候可以先清空数据,然后再请求一次接口
- onShow() {
- this.orderList = []
- this.currentPage = 1
- this.gettradelist()
- }
复制代码 总结:
- 第一种方法肯定要在脱离页面的时间清撤除界说的变乱否则会请求接口多次
- 第二种方法也是比力保举的一种
- 第三种方法是前二种都不能用的环境下利用,不是很保举利用
来源:https://blog.csdn.net/weixin_58791464/article/details/127689424
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |