小编给大家分享一下小程序改变onLoad执行时机的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
也许在小程序所有生命周期里,我们用的最多的就是>页面({ ,onLoad () { 时间=this.userData 才能;getUserData () wx.getLocation({才能 ,,,类型:& # 39;wgs84 # 39; ,,success (res), { ,,,//,业务代码 ,,,//,… ,,} })才能 ,} ,//? })
久而久之,每个页面的js里都是如上的重复代码。如果可以先执行完通用的初始化代码,再执行每个页面各自的> var originPage =,页面 function MyPage(配置),{ ,this.lifetimeBackup =, { onLoad才能:config.onLoad ,}=,config.onLoad 功能(选项),{//才能,自定义代码//才能,公共的初始化代码 时间=this.userData 才能;getUserData () ,,wx.getLocation ({ ,,,类型:& # 39;wgs84 # 39; ,,success (res), { ,,,//,执行,onLoad ,,,this.lifetimeBackup.onLoad.call(,,选项) ,,} })才能 ,} , ,//? ,originPage(配置) }
当然,实际开发过程中的初始化代码不可能这么少,可以用很多方式把它抽离出去,比如这样:
//,/initial.js跑龙套 function 初始(回调),{=,,this.userData  getUserData () ,wx.getLocation ({ 类型:才能,& # 39;wgs84 # 39; success 才能;(res), { ,,回调() ,,} ,}) } ,//,/wx.js跑龙套 var initial =,要求(& # 39;。/初始# 39;) var originPage =,页面 function MyPage(配置),{ ,this.lifetimeBackup =, { onLoad才能:config.onLoad ,}=,config.onLoad 功能(选项),{ 最初的才能((),=祝辞,{ ,,this.lifetimeBackup.onLoad.call(,,选项) })才能 ,} ,//? ,originPage(配置) }
也可以使用更多高级的方法抽离出去,比如事件总线之类的,就不多赘述。
看似很简单,但其实这样忽略了一个问题——生命周期顺序被打乱了!如果初始化方法里有异步代码,那首先执行的可能就是>//,/wx.js跑龙套 const LIFETIME_EVENTS =, (& # 39; onload # 39;,, & # 39;昂秀# 39;,,& # 39;onReady& # 39;】 var initial =,要求(& # 39;。/初始# 39;) var originPage =,页面 function MyPage(配置),{ ,LIFETIME_EVENTS.forEach((事件),=祝辞,{//才能,备份生命周期函数 this.lifetimeBackup才能(事件),=,配置(事件)//才能,临时清空 配置才能(事件),=,()函数,{} ,})=,config.onLoad 功能(选项),{ 最初的才能((),=祝辞,{ ,,//,依次执行生命周期函数 ,,LIFETIME_EVENTS.forEach((事件),=祝辞,{ ,,,this.lifetimeBackup(事件)打电话给(这个,,选项) ,,}) })才能 ,} ,//? ,originPage(配置) }
注意上述代码还是有问题的,当小程序业务跳走再返回或者切后台到前台时,昂秀无法正常触发,因为被设置为空函数了。
为了保证>//,/wx.js跑龙套 const LIFETIME_EVENTS =, (& # 39; onload # 39;,, & # 39;昂秀# 39;,,& # 39;onReady& # 39;】 var initial =,要求(& # 39;。/初始# 39;) var originPage =,页面 function MyPage(配置),{ ,LIFETIME_EVENTS.forEach((事件),=祝辞,{//才能,备份生命周期函数 this.lifetimeBackup才能(事件),=,配置(事件)//才能,临时清空 配置才能(事件),=,()函数,{} ,})=,config.onLoad 功能(选项),{ 最初的才能((),=祝辞,{ ,,//,依次执行生命周期函数 ,,LIFETIME_EVENTS.forEach((事件),=祝辞,{ ,,,this.lifetimeBackup(事件)打电话给(这个,,选项) ,,,//,执行完后,恢复过来 ,,,配置(事件),=,this.lifetimeBackup(事件) ,,}) })才能 ,} ,//? ,originPage(配置) }
代理了>以上是“小程序改变onLoad执行时机的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!