收藏
回答

微信小程序 页面跳转 页面数据 错乱 问题

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 工具 开发者工具 windows 1.02.1904090 2.6.6

- 当前 Bug 的表现(可附上截图)

首页 跳转 a页面 传参 data=1,

a页面跳转 b页面

b页面跳转 a页面 传参 data=2,

此时在当前 a 页面,点击返回按钮 会回到 b 页面,

此时在当前 b 页面,点击返回按钮 会回到 a 页面,

bug 出现了,此时的 a 页面的 data 的值 本来应该是 1,可是此时 却是 2 。


- 预期表现

希望回退操作 不改变 原有 page 的 data


- 复现路径

运行代码片段 -> 点击跳转 a 页面 button -> 点击跳转 b 页面 button -> 点击跳转 a 页面 button - 返回按钮 - 返回按钮


- 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/9qD90gmw7390


回答关注问题邀请回答
收藏

3 个回答

  • Jason
    Jason
    2019-06-20

    其实想让 a 页面的 data 数据和 a 页面实例绑定,最好的办法是 用   setData({data})  绑定,
    然后使用的时候,用this.data.data 获取,这样就能保证  页面数据 data 和 页面绑定,保证数据一致性了,

    如果没有 setData 绑定的 page全局变量,值会变的
    或者 setData() 绑定了 data  page全局变量。在获取的时候要想获取和页面绑定的一致的 data ,不能直接用 data ,得 this.data.data 这样获取


    我的问题解决了,希望能帮到 遇到相同问题的 开发者

    不过还是有个 疑问,就是 不通过  this.data.data 这种方式获取,直接使用 page 的全局变量 data 为什么 会出 问题呢? 


    希望能收到官方同学的回复。谢谢

    最终 代码片段如下https://developers.weixin.qq.com/s/oBHQsgmm7m9g

    2019-06-20
    赞同
    回复
  • 铭锋科技
    铭锋科技
    2019-06-20



    b跳转到a传的是2,a的data一定是2,后续只是返回操作并没有传参行为,不是2你认为是1?最终结果a页面的data应该是2


    代码片段看不了开发者工具又抽筋了,估计又是生命周期问题

    2019-06-20
    赞同
    回复 1
    • Jason
      Jason
      2019-06-20

      额, a1 页面(第一次打开的 a 页面)的 data 值 当然应该是 1 啊。


      2019-06-20
      回复
  • 祺爸💎
    祺爸💎
    2019-06-20


    2019-06-20
    赞同
    回复 3
    • Jason
      Jason
      2019-06-20

      实际需求就是要在 onShow 里面 带着 data 去接口请求 刷新数据的, 这么改解决不了 刷新数据的问题。

      2019-06-20
      回复
    • 祺爸💎
      祺爸💎
      2019-06-20回复Jason

      onload里setdata,onshow里取data

      2019-06-20
      回复
    • Jason
      Jason
      2019-06-20回复祺爸💎

      嗯嗯,谢谢你给我提供了灵感,我的问题已经解决了。 虽然你的回复 不是 我最终想要的效果。 还是谢谢你的 ”取data“ 给了我灵感 其实 想要 获取和 页面绑定的 data(希望获取到 a1页面的 data 为1,a2页面的data为2) 用  this.data.data 就可以达到我的目的。 但是很好奇 为什么 直接用  page 全局的 data 就会有问题。 最后谢谢你的回复

      2019-06-20
      回复
登录 后发表内容