详解小程序不同页面之间通讯的解决方案
小程序做开发的时候难免需要不同页面之间的通讯,比如首页打开新的页面搜索获取结果返回到首页,不同tab页面之间的数据交互等等。于是做了以下总结
当前页面打开新的页面
打开新的页面可以通过navigator组件来实现,通过url传参来实现,例如
搜索
在新的页面onLoad事件可以拿到传过来的参数options
onLoad:function(options){ console.log(options.id); }
新的页面回传数据到当前页面
在当前页面定义一个方法
searchRet(results){ console.log(results); }
在搜索页面获取到的结果,由于小程序页面是通过栈来存储的,所以可以通过getCurrentPages()获取获取当前页面栈的实例,第一个元素为首页,最后一个元素为当前页面
letpages=getCurrentPages(); lethomePage=pages[pages.length-2]; if(homePage){ homePage.searchRet(results); }
生命周期和storage
通过wx.setStorageSync()方法可以在本地存储数据,在page的onShow回调里获取storage的值后做相应的处理,例如
//index.js wx.setStorageSync('refresh',true); //mycenter.js if(wx.getStorageSync('refresh')){ //做更新操作 wx.removeStorageSync('refresh'); }
storage也可以用globalData来代替,原理一样,这里不做展开,两种办法都可行,但是就是太笨了,场景复杂起来没法搞