uni-app: onBackPress() 监听页面返回 - 更新数据

这篇具有很好参考价值的文章主要介绍了uni-app: onBackPress() 监听页面返回 - 更新数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

生命周期 - onBackPress() 监听页面返回

函数名 说明 平台差异说明
onBackPress 监听页面返回 ,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机能触发,只能监听非navigateBack引起的返回,不可阻止默认行为。 app、H5、支付宝小程序
  • 基础用法 :注意 返回值 options
onBackPress(options) {
	/**
	 * 由于 uni.navigateBack() 同样会触发 onBackPress 函数。因此在 onBackPress 中直接调用 uni.navigateBack() 并始终返回 true 会引发死循环。
	 * 此时,需要根据 onBackPress 的回调对象中的 from 值来做处理,当来源是 'navigateBack' 时,返回 false。
	*/
	if (options.from === 'navigateBack') {
		return false;
	}
}
返回刷新数据
  • 本级页面: 例如详情页
// 返回上一页刷新页面数据
// <!-- 返回方法  -->
onBackPress(options) {
	/**
	 * 由于 uni.navigateBack() 同样会触发 onBackPress 函数。
	 * 因此在 onBackPress 中直接调用 uni.navigateBack() 并始终返回 true 会引发死循环。
	 * 此时,需要根据onBackPress的回调对象中的from值来做处理,当来源是'navigateBack'时,返回 false 。
	*/
	console.log("----------onBackPress---------", options)
	if (options.from === 'navigateBack') {
		return false;
	}
	this.back();
	return true;
},
methods: {
	back() {
		let pages = getCurrentPages(); //获取所有页面栈实例列表
		let nowPage = pages[pages.length - 1]; //当前页页面实例
		let prevPage = pages[pages.length - 2]; //上一页页面实例
		console.log(prevPage)
		// 1. 改变值-在上一个页面 onShow 刷新数据
		prevPage.isRefresh = true   //修改上一页data里面的参数值为true
		uni.navigateBack({ //uni.navigateTo跳转的返回,默认1为返回上一级
			delta: 1
		});
		// 2. 也可以直接调用方法-成功返回后,用$vm.调用上一个页面的方法名,进行页面刷新
		uni.navigateBack({ //uni.navigateTo跳转的返回,默认1为返回上一级
			delta: 1,
			success:(event)=>{
				prevPage.$vm.getData();  // getData 是自己对应的方法名
			}
		});
	}
}

  • 上级页面: 例如列表页
export default{
	data(){
		return{
    		isRefresh:false
		}
	},
	// 上一个页面onShow
	onShow() {
		console.log('onShow')
		// this.h = uni.getSystemInfoSync().windowHeight - 135;
		// 返回刷新
		// 如果是提交状态返回isRefresh=1,才刷新页面
		let pages = getCurrentPages();
		let currPage = pages[pages.length - 1];
		if (currPage.isRefresh) {
			// 重新获取数据
			console.log("重新获取数据",this.isRefresh)
			// this.getData() // 获取列表数据
			// 每一次需要清除,否则会参数会缓存
			currPage.isRefresh = false
		}
		console.log(this.isRefresh)
	},
}


文章来源地址https://www.toymoban.com/news/detail-511377.html

到了这里,关于uni-app: onBackPress() 监听页面返回 - 更新数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app 如何返回到指定的页面

    实际开发中,发现了一个问题,即使签署合同的时候,发现调用法大大的页面,出现了一个问题,就是签署后,点回退,回退到了重新签署的页面。所以需要对回退进行自定义处理。 处理的话,就要到指定的返回页面。这里还存在不签署的情况,回退要是原来的页面。所以要

    2024年01月18日
    浏览(63)
  • Uni-app返回上一页面并携带参数

    目录 一、前言 二、实现方法 三、遇到的坑 四、事件详解 一、前言         需要实现这么一个需求:在一个列表页面,当子页面直接返回时,不刷新列表页面。但是当子页面的数据有变动时,需要刷新列表页面。本篇博客记录一下我是如何解决这个问题的。        

    2024年02月08日
    浏览(49)
  • uni-app微信小程序,在页面顶部添加返回按键,返回上一个页面

    1.示例: 2.实现方式: 在page.json文件中的style里添加如下代码: 3.tips: 在page.json中的页面顺序就是小程序加载过程中的页面顺序

    2024年02月12日
    浏览(52)
  • uni-app小程序uni.navigateBack返回上一个页面并传递参数.返回上个页面并刷新

    返回上一个打开的页面并传递一个参数。有种办法就是使用 假如从B页面返回A页面: 经过测试,在uni.app中使用B页面使用setData设置A页面参数无法实现(应该是被更改为常量属性了)。 打印console.log(prevPage)前一页面对象可得: 方法1:我们可以使用A页面原有方法 B页面传递:

    2024年02月16日
    浏览(62)
  • uni-app 返回上一个页面并传递参数(微信小程序)

    方法一 问题: 会记住每次返回. 并在下次获取参数时把所有的返回监听进行 全部返回 ( 不确定别人使用时是否会出现此问题 ) 打印示例结果如下: 打印说明: 获取用户信息1: 为每次进入第二个页面 (onload) 请求的数据 监听到事件来自返回的参数: 为第一个页面监听获取的数据 方

    2024年02月09日
    浏览(71)
  • uni-app:切换页面刷新,返回上一页刷新(onShow钩子函数的使用)

    切换页面刷新:通过onShow()便可实现 返回上一页通过uni.navigateBack({delta: 1});实现 以返回上一页刷新为例 在A页面写入方法refreshHandler() 在A页面写入onLoad(),onShow()  onLoad(): 首次进入页面时执行的方法,这里直接引入refreshHandler() 可以直接查询到页面数据 onShow(): 进入页面执行

    2024年02月15日
    浏览(64)
  • uni-app中监听网络状态,并在嵌入webView页面的组件中添加网络监测

    下载插件 打开网络异常组件页面,点击\\\"下载插件并导入HBuilderX\\\"按钮,打开HBuilderX软件后,选择需要导入插件的项目,点击“确定即可”。 使用插件 pages/network/index页面,仿照微信。 效果展示 修改网络监测组件mz-network-error 当网络状态发生变化时emit相关事件 修改组件调用

    2024年02月12日
    浏览(50)
  • uni-app:监听数据变化(watch监听、@input事件)

    方法一:文本框监听,使用 @input 事件 方法二:使用watch监听属性(很好解决了文本框中数据非手输时监听不到数据变化)

    2024年02月10日
    浏览(47)
  • uni-app基础详解(组件、弹窗、数据缓存、页面跳转)

    uni-app组件 scroll-view 回到顶部 swiper text 文本 属性 说明 selectable 是否选中 decode 解码 例如: lt; , gt; 等 space 是否显示空格 space的参数值 参数 说明 emsp 中文字符空格大小 ensp 中文字符空格一半大小 nbsp 根据字体设置的空格大小 button 按钮 input 输入框 属性名 类型 默认值 说明

    2024年01月18日
    浏览(44)
  • 在uni-app中,如果data中的对象属性改变了,但是页面没有相应更新的情况,通常有以下几点需要注意:

    1. 使用this.$set更新对象属性直接修改对象属性是无法触发页面更新的,需要使用this.$set方法: 2. 确保数据层级不太深如果对象层级过深,改变内层属性也可能无法触发更新。建议关键数据不要超过2层。 3. 使用深度 watcher可以在watch中用深度watcher的方式监听整个对象的变化: 4. 使用

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包