使用wx.navigateBack();返回上一页,为什么onShow中的函数不
发布于 6 年前 作者 zren 10523 次浏览 来自 问答
  • 需求的场景描述(希望解决的问题)

从A页面跳转到B页面之后,B页面对用户数据做了一些处理,处理之后返回A页面,但是A页面onShow中的函数没有重新执行,刷新页面数据

A页面跳转到B页面:

        

B页面返回A页面:

  • 希望提供的能力

怎样才能返回上一页之后,页面中onShow中函数重新执行,加载新的数据

5 回复

是执行了的,但是之前的列表还在,又重新加载了一个新的列表

我也碰到这个问题 在开发者工具是正常

但是在真机上就出现这个问题了

请问你最后怎么解决呢

关键是看你onShow里数据处理逻辑怎么写的。

class Event{
    constructor(){
        this.callbacks = {}
    }
    set(key, value){
        if(!key)
            return
 
        if(key in this.callbacks)
            (this.callbacks[key])(value)
    }
    on(key, fn){
        if(!key || typeof(fn) != 'function'){
            return false
        }
        this.callbacks[key] = fn
        return true
    }
}
 
export default new Event()

A页面

import event from ‘…/…/utils/event’

onShow(){ 

    event.on(‘classifyId’,(classifyId)=>{

            1.  监听B页面返回的值

            2.  执行刷新xxx

         })

    }

}

B页面

import event from ‘…/…/utils/event’

onBack(){

event.set(‘classifyId’,{})

     wx.navigateBack({ delta:1 })

}

 

你在A页面的onShow()中,打印一下看看。这个页面方法在回退之后应该是会执行一次的

回到顶部