uniapp之页面返回并调用返回页方法

在H5页面我们只需下面这样,但是打包成APP是无效的app需要单独加上一个.$vm

js 复制代码
const currentPages = getCurrentPages();
const currentPage = currentPages[currentPages.length - 1];
currentPage[funName] && currentPage[funName]();

最终代码,细心的朋友会发现,下面获取的currentPage,H5和APP是不同的,这是因为app端是先改变路由再跳转页面,而H5端是先跳转页面再改变路由(CurrentPages喻为路由)

js 复制代码
/**
 * 返回上一页且调用上一页方法
 * @param {Object} funName 方法名
 */
export function back(funName) {
	uni.navigateBack({
	  success: () => {
	    const currentPages = getCurrentPages();
	    if (currentPages.length >= 2) {
		  // #ifdef APP
		  // app 端是先改变路由再跳转页面
	      const currentPage1 = currentPages[currentPages.length - 1];
		  currentPage1.$vm[funName] && currentPage1.$vm[funName]();
		  // #endif
		  // #ifdef H5
		  // H5 端是先跳转页面再改变路由
	      const currentPage2 = currentPages[currentPages.length - 2];
		  currentPage2[funName] && currentPage2[funName]();
		  // #endif
	    }
	  }
	});
}

/**
 * 返回上一页且刷新(上一页有pullDownRefresh方法时)
 */
export function backRefresh() {
	back('pullDownRefresh');
}
相关推荐
Tzarevich几秒前
从命令式到声明式:用 Vue 3 构建任务清单的开发哲学
javascript·vue.js·响应式编程
醉风塘几秒前
NPM:从“模块之痛”到“生态之基”的演化史
前端·npm·node.js
Mapmost1 分钟前
【高斯泼溅】大场景可视化的「速度与激情」:Mapmost 3DGS实时渲染技术拆解
前端
研☆香2 分钟前
深入解析JavaScript的arguments对象
开发语言·前端·javascript
parksben4 分钟前
告别 iframe 通信的 “飞鸽传书”:Webpage Tunnel 上手指南
前端·javascript·前端框架
全栈前端老曹4 分钟前
【前端权限】 权限变更热更新
前端·javascript·vue·react·ui框架·权限系统·前端权限
写代码的皮筏艇6 分钟前
react中的useCallback
前端·javascript
用户8168694747257 分钟前
Fiber 双缓存架构与 Diff 算法
前端·react.js
AAA简单玩转程序设计8 分钟前
Java集合“坑王”:ArrayList为啥越界还能浪?
java·前端
AAA简单玩转程序设计8 分钟前
别再把Java枚举当“花瓶”!它能办大事
java·前端