收藏
回答

多次重复访问同一个页面,setData无效

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 微信安卓客户端 7.0.9 2.10.0

第一次获取蓝牙数据成功后,进行setData可以正常渲染,然后提交数据,redirectTo回到主页,然后点击再次navigateTo该页面,进行链接蓝牙获取数据,数据获取输出正常,但进行setData却无效!

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

3 个回答

  • 张生
    张生
    2019-12-27

    我估计,你是把他写在页面的生命周期里了?


    要确定你写在哪里才可以了解情况,如果你想重新来,就在每次这个离开这个页面的时候把页面销毁了。

    试一下是否可行?

    onUnload: function(){
    let pages = getCurrentPagses().length - 1;
        console.log('需要销毁的页面:'+pages);
        wx.navigateBack({
          delta: pages
        })
    }
    
    2019-12-27
    有用
    回复 1
    • 旅程
      旅程
      2019-12-27
      测试了还是不行,不过还是感谢老兄,弄出了一个解决非常规的方案就是在加载页面的时候触发一个setInterval定时触发函数,在蓝牙返回数据的时候,把蓝牙返回值赋值给全局变量,通过定时触发函数来获取全局变量并且setdata,这个方法虽然不太好,但是可以解决当前的问题
      2019-12-27
      回复
  • 小满
    小满
    2019-12-26

    看你图片标记的输出一模一样啊,看不出问题。上个代码片段吧

    2019-12-26
    有用
    回复 6
    • 旅程
      旅程
      2019-12-26
      console.log 前后数据是一摸一样的,但是就是后面setdata不起任何效果,代码片段太复杂了,要链接蓝牙特定设备,上上来估计也运行触发不了
      2019-12-26
      回复
    • 小满
      小满
      2019-12-26回复旅程
      this.setdata({},()=>{})  那只能打断点了多看看。前后数据对比下
      2019-12-26
      回复
    • 旅程
      旅程
      2019-12-26回复小满
      目前猜测应该是var _this = this 这些对象的相互干扰,第二次 ()=>{} 不执行
      2019-12-26
      回复
    • 旅程
      旅程
      2019-12-26回复小满
      有没有什么办法重新进入页面时,把之前的所有对象数据都清掉,这样估计两次的数据就不会互相干扰了,谢谢
      2019-12-26
      回复
    • 小满
      小满
      2019-12-26回复旅程
      页面卸载就清掉
      2019-12-26
      回复
    查看更多(1)
  • 子不语
    子不语
    2019-12-26

    请提供一个可以复现的代码片段

    2019-12-26
    有用
    回复 4
    • 旅程
      旅程
      2019-12-26
      代码片段太复杂了,要链接蓝牙特定设备,上上来估计也运行触发不了
      2019-12-26
      回复
    • 旅程
      旅程
      2019-12-26
      目前猜测应该是var _this = this 这些对象的相互干扰
      2019-12-26
      回复
    • 旅程
      旅程
      2019-12-27
      感谢老兄,弄出了一个解决非常规的方案就是在加载页面的时候触发一个setInterval定时触发函数,在蓝牙返回数据的时候,把蓝牙返回值赋值给全局变量,通过定时触发函数来获取全局变量并且setdata,这个方法虽然不太好,但是可以解决当前的问题
      2019-12-27
      回复
    • 子不语
      子不语
      2019-12-27回复旅程
      能解决就好
      2019-12-27
      回复
登录 后发表内容
问题标签