收藏
回答

在遍历中 使用 this.setData({}) 这个操作是否可行?如何优化成最好的方式呢?

data:{
  list:[
    {id:1,select:false},
    {id:2,select:false},
    {id:3,select:false},
    {id:4,select:false},
  ]
},
methods:{
  handle(){
    this.data.list.forEach((v,i)=>{
      this.setData({
        [`list[${i}].select`]:true
      })
    })

  }

}

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

3 个回答

  • 那一抹笑😃 穿透阳光
    那一抹笑😃 穿透阳光
    2023-08-17

    你为啥不全部改变成true之后,在setData

    2023-08-17
    有用
    回复
  • PENG
    PENG
    2023-08-17

    const list = [...this.data.list]

    list.map(item => {

    item.select = true

    })

    this.setData({ list: list })

    2023-08-17
    有用
    回复
  • 拾忆
    拾忆
    2023-08-17

    先在循环外先声明变量,然后循环内处理变量,最后在循环外直接setData。

    2023-08-17
    有用
    回复 3
    • 乘着风破着浪
      乘着风破着浪
      2023-08-17
      我的理解:
      遍历中 设置后 导致页面渲染 一次改变就遍历
      遍历后 设置后 全部一次更新 一次改变全部元素
      疑问:这两种的性能是最后那个比较好吗?第一种方式这样只改变单个值会导致那一项的内容全部遍历还是对比改变的?
      第二种方式是有用到对比算法的嘛?如果有那我懂了
      2023-08-17
      回复
    • 拾忆
      拾忆
      2023-08-17回复乘着风破着浪
      参考官方文档,尽量避免频繁渲染。
      2023-08-17
      回复
    • 乘着风破着浪
      乘着风破着浪
      2023-08-17回复拾忆
      好的😀
      2023-08-17
      回复
登录 后发表内容