场景:在onShow
中接收上一个页面跳转传递过来的值如ReceiveId
,使用setData
保存在Data
中,然后再调用某个方法(此方法需要使用接收的ReceiveId),此时往往由于执行太快,此方法拿不到ReceiveId
的情况,一般如何解决?
情景复现A页跳转到B页:
A页面:
success(res) {
res.eventChannel.emit('Request', {
groupId: id
})
}
B页面onShow中:
let channel = this.getOpenerEventChannel()
channel.on('Request', (data) => {
this.setData({
myGroupId: data.groupId,
})
})
this.getHotelLists()
B页面方法:
async getHotelLists() {
let result = await $axios.GET('xxx/xxx?groupId=' + this.data.myGroupId,{}, app.globalData.token)
... ...
}
getHotelLists()
方法拿不到this.data.myGroupId
,如果延时调用,可以拿到值,感觉不合理,比如下面:
setTimeout(() => {
this.getHotelLists()
}, 500)
此时往往由于执行太快
首先你要确认是否是执行太快获取不到,还是本来onShow就没有这个值传递
不太确定B页面 this.getHotelLists()的触发时机,应当在赋值后再进行获取列表操作