setData失败
发布于 7 年前 作者 liangxiuying 9891 次浏览 来自 问答

情景是这样的:

  • 从识别小程序码进入页面A

  • 在该页面下进入一个二级页面B

  • 返回A页面

  • 退出小程序

  • 再识别进入小程序页面A

此时出现了一个问题, 接口我都能顺利的调用, 但是页面A却白屏

我怀疑是页面A的setData并没有成功, 于是在setData第二参数传入function并且console出来

发现 两次均有执行到setData前的console

但是 第一次识别进入时有出现setData的回调成功信息, 第二次却没有

这个问题由于只能在正式环境调试, 比较麻烦

有人知道是什么原因吗?

相关代码: page onshow

提供一个测试的小程序码

2 回复

建议 你放在onshow 方法试试

问题已解决

大致原因是从二级页面返回的时候页面A调用onShow没有做任何操作, 退出再扫码进入页面A的时候, 微信会将页面A onUnload, 并且重新初始化页面, 在onshow中就可以拿到page实例, 问题是此时this是一个旧的page实例(从打印中的this. __wxExparserNodeId__可以判断与退出小程序时的this. __wxExparserNodeId__相同), 即我setData时, 把值set到一个旧的page实例中, 导致新的page没有渲染成功

解决方法:

在二级页面返回page onshow的时候重新调接口setData即可

回到顶部