// 前进页面回调方法 function navigateTo (url,functionName,...args) { triggerNextPageFn('onHide', functionName, ...args) // 跳转后处理数据 wx.navigateTo({url}) } function redirectTo (url,functionName,...args) { triggerNextPageFn('onUnload', functionName, ...args) // 跳转后处理数据 wx.redirectTo({url}) } // 通用触发后一个页面的方法 function triggerNextPageFn(type, functionName, ...args) { let prePage = getCurPage() if (functionName) { // 保存当前变量 ((..._args) => { let oldEventFn = prePage[type] prePage[type] = () => { // 前进页面改变onReady方法,这里使用了setTimeout setTimeout(() => { let newPage = getCurPage() let oldOnReady = newPage.onReady newPage.onReady = function () { newPage.data.$root[0] && typeof newPage.data.$root[0][functionName] == 'function' && newPage.data.$root[0][functionName](..._args) oldOnReady.apply(newPage) newPage.onReady = oldOnReady } }) prePage[type] = oldEventFn } })(...args) } }
小结
传递方式那么多,选择适合自己的才是最重要的。虽然我们写的这个传参方法不是微信官方支持的,因为文档里面明确说了不要修改页面栈,但就目前使用情况来看还是没遇到什么问题的,也许还没遇到吧。
就本篇文章中介绍的传参方式,如果有不妥的地方或者更好的修改建议,希望大家能帮我们提出来,大家共同进步。