收藏
回答

setData失败


情景是这样的:

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

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

- 返回A页面

- 退出小程序

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



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

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

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

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

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

有人知道是什么原因吗?


相关代码: page onshow





提供一个测试的小程序码


最后一次编辑于  2018-09-03  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

5 个回答

  • 虾米🦐
    虾米🦐
    2018-09-03

    问题已解决


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


    解决方法:

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

    2018-09-03
    赞同 11
    回复
  • จุ๊บ
    จุ๊บ
    2018-09-03

    建议 你放在onshow 方法试试

    2018-09-03
    赞同
    回复 3
    • 虾米🦐
      虾米🦐
      2018-09-03

      你好, 现在已经是放在onshow中, 确定代码有执行到, 但是setData没有成功

      2018-09-03
      赞同
      回复
    • จุ๊บ
      จุ๊บ
      2018-09-03回复虾米🦐

      贴出来问题代码看下吧。。

      2018-09-03
      赞同
      回复
    • 虾米🦐
      虾米🦐
      2018-09-03回复จุ๊บ

      代码已经贴上去了9 9

      2018-09-03
      赞同
      回复