收藏
回答

setData不同步问题?

控制台输出为true;但页面上还是false;怎么解决?

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

2 个回答

  • REN.
    REN.
    2023-10-08
    • 原因:setData用于异步更新渲染层,而log是同步的,因此当log结果为true时,渲染层还未更新
    • 解决:
    // setData提供了回调
    that.setData({ppshow: true},() => {
        console.log(that.data.ppshow)
    })
    // nextTick API
     wx.nextTick(() => {
        console.log(that.data.ppshow)
    });
    // 先同步更新数据
    that.data.ppshow = true
    console.log(that.data.ppshow)
    
    2023-10-08
    有用
    回复
  • Lewis
    Lewis
    2023-10-08

    setData 在渲染层是异步的,要想保持结果一致要写成这样:that.setData({ppshow: true}, console.log(that.data.ppshow)),或者用 wx.nextick

    2023-10-08
    有用
    回复
登录 后发表内容