收藏
回答

setData异步造成的问题?

我在onLoad里面使用setData保存路由参数,在onShow里面可能使用this.data获取不到在onLoad里面设置的数据,setData是异步的,谁有好用的方法吗

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

5 个回答

  • 卡卡
    卡卡
    2021-07-08

    你的参数为什么要经过data层了,直接放在this变量上就行啊。例如


    onload(){

    this.params1 = 111;

    this.params2 = 222;

    },

    onshow(){

    console.log(this.param1)

    }

    如果有帮忙,麻烦点有用,谢谢

    2021-07-08
    有用 1
    回复
  • 陈生
    陈生
    2021-07-08

    如果是这样,为什么不考虑使用缓存,根据缓存是否存在走逻辑

    2021-07-08
    有用
    回复 5
    • 周祥
      周祥
      2021-07-08
      storage麻烦啊,而且这样需要参数的页面多了起来,storage里面的东西多了也不好
      2021-07-08
      回复
    • 陈生
      陈生
      2021-07-09回复周祥
      你这跟setData异步其实没关系,因为页面方法是先执行onShow再执行onLoad;你可以看看是否可以将你的逻辑放到onLoad中
      2021-07-09
      回复
    • 周祥
      周祥
      2021-07-09回复陈生
      额,页面是先执行onLoad,在执行onShow,看看文档吧
      2021-07-09
      回复
    • 陈生
      陈生
      2021-07-12回复周祥
      不好意思,没注意。那更好处理了,你在onLoad函数加个async,调用getData函数时加个await
      2021-07-12
      回复
    • 周祥
      周祥
      2021-07-12
      onShow不会等待,这个方法不适用
      2021-07-12
      回复
  • 老张
    老张
    2021-07-08

    我一般是这样:

      onLoad: function (options) {
        this.getData()
      },
      getData: function () {
        this.setData({
          test: 'test'
        })
      },
      onShow: function () {
        if (this.data.test) { }
        else this.setData()
      },
    
    
    2021-07-08
    有用
    回复 11
    • 周祥
      周祥
      2021-07-08
      但是触发了onShow中的else,咋办呢
      2021-07-08
      回复
    • 周祥
      周祥
      2021-07-08
      else里面调用this.onShow() ?
      2021-07-08
      回复
    • 神经蛙
      神经蛙
      2021-07-08回复周祥
      onshow里也可以获取到路由参数,触发了else,你可以用路由参数做处理
      2021-07-08
      1
      回复
    • 周祥
      周祥
      2021-07-08回复神经蛙
      明白了
      2021-07-08
      回复
    • 老张
      老张
      2021-07-08回复周祥
      else 里写错了,是this.getData()
      2021-07-08
      回复
    查看更多(6)
  • 周祥
    周祥
    2021-07-08

    使用wx.nextTick能解决吗

    2021-07-08
    有用
    回复
  • 青寒
    青寒
    2021-07-08

    that = this?

    2021-07-08
    有用
    回复 1
    • 周祥
      周祥
      2021-07-08
      没明白啥意思
      2021-07-08
      回复
登录 后发表内容