收藏
回答

this.setData()输出长度不对?

我用wx.navigateTo传递对象ss_xx,然后在显示的页面打印出来,打印的是正确的两条数据,但是一旦this.setData({ss_xx:ss_xx}),输出之后括号显示的是2,但是一展开就是4条

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

2 个回答

  • 再见,电脑崽
    再见,电脑崽
    2022-04-22

    我猜测是没有深度拷贝的原因导致的,尝试对传递的参数做JSON.stringify(ss_xx)处理后再传值。

    如果方便的话,提供一下代码片段来看看。

    2022-04-22
    有用 1
    回复 6
    • Jeannn
      Jeannn
      2022-04-22
      是这样的
      2022-04-22
      回复
    • 再见,电脑崽
      再见,电脑崽
      2022-04-22回复Jeannn
      plate4页面中是否有其他setData在修改这个ss_xx的值。
      2022-04-22
      1
      回复
    • 再见,电脑崽
      再见,电脑崽
      2022-04-22
      你贴一下plate4.js的全部代码
      2022-04-22
      1
      回复
    • 再见,电脑崽
      再见,电脑崽
      2022-04-22回复Jeannn
      你程序有多个   this.setData({
            ss_xx:ss_xx
          })
      导致打印的数据被修改。


      目前你可以在plate4 onLoad打印的时候直接打印options.ss_xx
      2022-04-22
      1
      回复
    • 再见,电脑崽
      再见,电脑崽
      2022-04-22
      原因就在于你var ss_xx = JSON.parse(options.ss_xx); 这个定义的ss_xx赋值到this.data.ss_xx后,指向相同的内存地址。onLoad和onShow都在修改this.data.ss_xx,几乎是同时进行,所以打印的结果是被onShow里面的setData给修改了。你可以先把onShow函数注释掉,再看打印数据就一定是对的。
      2022-04-22
      1
      回复
    查看更多(1)
  • Mr.Zhao
    Mr.Zhao
    2022-04-22

    console.log(JSON.stringify(data)) 这么打印

    2022-04-22
    有用 1
    回复 5
    • Jeannn
      Jeannn
      2022-04-22
      我是在第一个页面使用JSON.stringify传过去,然后第二个页面JSON.parse解析再输出的
      2022-04-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2022-04-22回复Jeannn
      2022-04-22
      1
      回复
    • Jeannn
      Jeannn
      2022-04-22
      请问能具体说说吗,这是我的代码片段
      2022-04-22
      回复
    • Mr.Zhao
      Mr.Zhao
      2022-04-22回复Jeannn
      截图告诉你了
      2022-04-22
      1
      回复
    • Jeannn
      Jeannn
      2022-04-25
      谢谢您的耐心解答
      2022-04-25
      回复
登录 后发表内容