详解小程序不同页面之间通讯的解决方案

  

小程序做开发的时候难免需要不同页面之间的通讯,比如首页打开新的页面搜索获取结果返回到首页,不同选项卡页面之间的数据交互等等。于是做了以下总结

  

<强>当前页面打开新的页面
  

  

打开新的页面可以通过导航器组件来实现,通过url传参来实现,例如

        & lt;导航器url=" . ./搜索/搜索# 63;id=123 "敞开式=岸ㄏ颉痹谒阉? lt;/navigator>      

在新的页面>   onLoad:功能(选项){   console.log (options.id);   }   之前      

<强>新的页面回传数据到当前页面
  

  

在当前页面定义一个方法

        searchRet(结果){   console.log(结果);   }   之前      

在搜索页面获取到的结果,由于小程序页面是通过栈来存储的,所以可以通过getCurrentPages()获取获取当前页面栈的实例,第一个元素为首页,最后一个元素为当前页面

        让页面=getCurrentPages ();   让主页=页面(页面。长度- 2);   如果(主页){   homePage.searchRet(结果);   }   之前      

<强>生命周期和存储
  

  

通过wx.setStorageSync()方法可以在本地存储数据,在页面的>//index.js   wx。setStorageSync(“刷新”,真正的);//mycenter.js   如果(wx.getStorageSync(“更新”)){//做更新操作   wx.removeStorageSync(“更新”);   }      之前      

存储也可以用globalData来代替,原理一样,这里不做展开,两种办法都可行,但是就是太笨了,场景复杂起来没法搞& # 128555;

  

<强>事件监听
  

  

个人感觉通过全局的事件监听来处理是一个很好的方法,在页面页面监听事件,通过在另一个页面触发相应的事件,就可以做对应的处理,实时高效,于是我封装了一个可以声明命名空间的事件监听器nsevent,可以通过npm安装到小程序(微信官方npm使用方法)

  

nsevent的用法也很简单,只需要在监听的页面通过nsevent.on()来实现监听,建议添加第三个参数命名空间,这样可以在>//select.js   const nsevent=要求(“nsevent”);   页面({>   nsevent。发出(locationChange, {ns: [' pageA ']});   之前      

附上小程序代码片段,以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

详解小程序不同页面之间通讯的解决方案