小程序改变onLoad执行时机的方法

  介绍

小编给大家分享一下小程序改变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执行时机的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

小程序改变onLoad执行时机的方法