小程序页面相互的数据传递
参考微信文档 wx.navigateTo
A->B 数据传递
少量数据传递(常用)
wx.navigateTo 参数:? 隔开,=相连,&拼接多个参数
//A页面
wx.navigateTo({
url: '/pages/B/index?type=a&name=A',
})
//B页面
onLoad: function (options) {
const {type,name} = options
console.log(type,name) // 'a','A'
}
大量数据传递
A页面:res.eventChannel.emit 与 B页面:this.getOpenerEventChannel().on
//A页面
wx.navigateTo({
url: '/pages/B/index',
success: function (res) {
res.eventChannel.emit('nav', { data: 'A DATA' })
}
})
//B页面
onGetAData: function () {
this.getOpenerEventChannel().on('nav', params => {
console.log('ON:', params); // 'ON:' { data: 'A DATA' }
})
}
A<-B 数据传递
使用events监听
A页面: wx.navigateTo events 与 B页面 this.getOpenerEventChannel().emit
//A页面
wx.navigateTo({
url: '/pages/B/index',
events: {
onDataChange: function (obj) {
console.log('events B:', obj); // 'events B:' { data: 'B to A' }
},
},
})
//B页面
onChange: function () {
this.getOpenerEventChannel().emit('onDataChange', { data: 'B to A' })
}
页面数据存储
getCurrentPages(); 设置页面数据
//A页面
onShow: function () {
const { bData } = this.data
console.log('BACK:', bData ); // 'BACK'
},
//B页面
const pages = getCurrentPages();
const APage = pages[pages.length - 2]; //上一页(页数)
APage .setData({ bData : { data: 'b Data' } });
公共数据
使用setStorageSync和getStorageSync
// set
wx.setStorageSync('test', data);
// get
wx.getStorageSync('test')