收藏
回答

微信小程序第一次进入页面,setData能正常更新视图,再次进入页面,但是更新不了视图?

微信小程序第一次进入页面,setData能正常更视图,再次进入页面,setData数据更新,但是视图不更新

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

2 个回答

  • 仙森ღ₅₂₀¹³¹⁴
    仙森ღ₅₂₀¹³¹⁴
    11-18

    你在wx.nextTick后试试

    11-18
    有用
    回复 7
    • 无生
      无生
      11-19
      这个是在组件中用吧,在页面中可以使用吗
      11-19
      回复
    • 无生
      无生
      11-19
      用了还是不行
      11-19
      回复
    • 无生
      无生
      11-19
      我把data里的数据清空之后再赋值就可以更新,但是页面就会闪动
      11-19
      回复
    • 仙森ღ₅₂₀¹³¹⁴
      仙森ღ₅₂₀¹³¹⁴
      11-19回复无生
      代码片段来个 我复现下。
      11-19
      回复
    • 无生
      无生
      11-19回复仙森ღ₅₂₀¹³¹⁴
      // pages/index/index.js
      const regeneratorRuntime = global.regeneratorRuntime
      import api from '../../api/api'
      var app = getApp()
      var addData = app.globalData
      Page({
       /**
        * 页面的初始数据
        */
       data: {
        taskList: [], //任务列表
        pages: null, //总加载页数
        currentPage: 1, //当前页
        is_load: true, //是否加载请求
       },
       /**
        * 查询任务列表
        */
       async applyTasks() {
        if (this.data.is_load) {
         this.setData({
          is_load: false,
         })
         var params = {
          pageSize: 10,
          currentPage: this.data.currentPage,
          isGetAll: false,
         }
                  // this.setData({
                  // taskList:[]
                  // })
         let res = await api.connect('/task/queryAllTasks', {
          data: params,
         })
         if (res.data.code === '2000') {
                      var arr1 = this.data.taskList,
                          arr2=res.data.data;
          if (this.data.currentPage === 1) {
           this.setData({
            taskList: arr2,
            pages: Math.ceil(res.data.count / 10),
            is_load: true,
                          })
                          this.setData({
                              taskList:this.data.taskList
                          })
          } else {
           this.setData({
            taskList: arr1.concat(arr2),
            pages: Math.ceil(res.data.count / 10),
            is_load: true,
           })
          }
         }
        }
       },
       /**
        * 生命周期函数--监听页面加载
        */
       onLoad: function (options) {
          this.setData({
         currentPage: 1,
        })
        this.applyTasks()
        wx.setNavigationBarTitle({
         title: addData.textTitle,
        })
       },
       /**
        * 生命周期函数--监听页面初次渲染完成
        */
       onReady: function () {},
       /**
        * 生命周期函数--监听页面显示
        */
       onShow: function () {
              const pages = getCurrentPages()
              const perpage = pages[pages.length - 1]
              perpage.onLoad()
       },
       /**
        * 生命周期函数--监听页面隐藏
        */
       onHide: function () {},
       /**
        * 生命周期函数--监听页面卸载
        */
       onUnload: function () {},


       /**
        * 用户点击右上角分享
        */
       onShareAppMessage: function () {},
      })
      11-19
      回复
    查看更多(2)
  • garField
    garField
    11-18

    创建一个可以重现问题的代码片段才能判断问题 https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    11-18
    有用
    回复 3
    • 无生
      无生
      11-18
      难以复现,setData已经成功,但是界面没有更新
      11-18
      回复
    • 无生
      无生
      11-18
      在setData成功之后打印的data中的数据,数据正确,但是界面没有更新
      11-18
      回复
    • 无生
      无生
      11-18
      将数据设置为空之后再复制就没有问题了,但是将数据设置为空时界面闪烁
      11-18
      回复
登录 后发表内容
问题标签