微信小程序拿不到onShow中接收传递值

场景:在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)
阅读 2k
1 个回答

此时往往由于执行太快
首先你要确认是否是执行太快获取不到,还是本来onShow就没有这个值传递

不太确定B页面 this.getHotelLists()的触发时机,应当在赋值后再进行获取列表操作


B页面onShow中:
let channel = this.getOpenerEventChannel()
    channel.on('Request', (data) => {

           this.setData({
           myGroupId: data.groupId, 
            });
this.getHotelLists()
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题