收藏
回答

列表渲染数据不更新,setData并没有效果

问题模块 框架类型 问题类型 操作系统 工具版本
开发者工具 小程序 Bug Windows 1.02.1804251



需求是渲染一个列表,通过两个按钮切换数据

如果数据已经存在则 对数据赋值,若数据不存在则调用网络获取。

但是实际情况中, 数据直接赋值并不会更新界面,即使对列表中的数据进行深拷贝也是一样

如图调用前:


首次点击网络获取数据后:


再次点击直接赋值数据:


请问这里的列表数据不更新是bug还是我使用方法有问题?


经提醒,wxml文件代码如下:


对应点击事件 js代码:



对应贴上了代码片段:   wechatide://minicode/49jeBBmZ7B91


最后一次编辑于  2018-07-02  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

2 个回答

  • 卢霄霄
    卢霄霄
    2018-07-02

    这一段逻辑,我只能猜测是你点击tab页的事件处理赋值逻辑写错了。要么多贴点代码,要么给个片段吧

    2018-07-02
    赞同
    回复 9
    • 朔月之外
      朔月之外
      2018-07-02

      重新贴了代码,

      2018-07-02
      回复
    • 卢霄霄
      卢霄霄
      2018-07-02回复朔月之外

      你getList的执行放到了给 choose赋值的前面。。。

      2018-07-02
      回复
    • 朔月之外
      朔月之外
      2018-07-02回复卢霄霄

      ('·ω·`)

      但是这里不是应该先拿到列表(getlist) 再对list进行赋值么?

      我重新弄了代码片段, 劳烦查看下

      wechatide://minicode/49jeBBmZ7B91

      2018-07-02
      回复
    • 卢霄霄
      卢霄霄
      2018-07-02回复朔月之外

      吐槽的点太多。。loadMore方法里的第一行判断写的有问题。。你loadMore里第一次不是把

      this.data.page[this.data.choose] = 1

      this.data.end[this.data.choose] = 1

      这俩都设为了1,以后进来就直接return了啊

      2018-07-02
      回复
    • 朔月之外
      朔月之外
      2018-07-02回复卢霄霄

      ......

      点击事件是  findAll() , 当点击时如果没有获取数据调用 loadmore()

      这里是获取服务器数据的,我这里做片段当然是直接赋值了,页码也只需要1页。当然直接return了

      我的问题是点击了 findAll() , 当getlist() 返回了数据时(已经获取数据)的时候为何没有刷新界面


      2018-07-02
      回复
    查看更多(4)
  • 晨
    2018-06-30

    麻烦给个相关的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html),我们定位下问题

    2018-06-30
    赞同
    回复 1