百度小程序之间的页面通信过程详解

  

  

主要是针对小程序开发中页面之间进行通信的问题,在涉及支付的场景中,用户从页面支付入口进行跳转进行支付之后,回到原来页面,在原来的页面需要进行相应的状态刷新,比如用户身份状态,支付状态,文档或商品情况。

  


  

  

在使用百度小程序的天鹅。navigateBack进行回跳页面时,API中的方法参数不支持携带参数,只支持数量参数。

  

所以就涉及了几个单独页面之间的通信问题。如下主要列出了几个方法,供参考。

  

<强> swan.navigateBack

  

           参数名   类型   必填   默认值   说明               δ   数量   否   1   返回的页面数,如果三角洲大于现有页面数,则返回到首页1。         成功   函数   否   -   接口调用成功的回调函数         失败   函数   否   -   接口调用失败的回调函数         完整的   函数   否   -   接口调用结束的回调函数(调用成功,失败都会执行)            

  


  

  

主要有以下三种方法,实现各页面之间通信。

  

<>强解决方法一:利用应用程序。js,设置公共变量
  

  

利用app.js的公共特性,将变量挂在应用上。

     //app.js启动文件   应用程序({   globalData: {   isLogin:假的,   用户信息:空,   networkError:假的,   networkType:‘没有’   }   })      

在其他页面页上使用时,使用:

     //. js   const应用=getApp ();   const commonParams=app.globalData.isLogin;      

但是存在的缺点也十分明显,当数据量比较大,数据关系比较复杂时,维护会比较复杂,逻辑会很混乱。

  

<>强解决方法二:利用存储
  

  

利用小程序的全局存储,对数据进行存取,原理类似于解决方案一。

     //存储-异步   swan.setStorage ({   关键:“关键”,   数据:“价值”   });//存储-同步   天鹅。setStorageSync(“关键”、“价值”);//获取-异步   swan.getStorage ({   关键:“关键”,   成功:函数(res) {   console.log (res.data);   },   失败:函数(err) {   控制台。日志(“错误码:“+ err.errCode);   控制台。日志(“错误信息:“+ err.errMsg);   }   });//获取——同步   const结果=swan.getStorageSync(关键);      

<>强解决方法三:利用事件中心
  

  

利用事件中心的进行订阅和发布。

     //事件。js事件中心      类事件{>//app.js   从“进口事件。/跑龙套/事件”;      应用程序({   事件:新事件()   })      

订阅的页面中,使用的方法进行订阅

     //视图。js阅读页进行订阅      页面({//页面在回退时,会调用昂秀方法>//paySuccess.js      const应用=getApp ();      app.event。发出(afterPaySuccess, {   docId: this.data.tradeInfo.docId,   triggerFrom:“docCashierBack”   });      

根据事件中心的发布和订阅,实现了页面之间的通信,就能实现比如页面在支付成功后回退时,页面状态的改变的场景,同时利于维护页面之间的数据关系,能通过在发布时传递参数,实现数据之间的通信。

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

百度小程序之间的页面通信过程详解