收藏
回答

不懂就问? 关于 setData性能问题

做一个购物车选择功能 当全选的时候 是 把整个购物车数据都重新setData更快 还是 逐条setData选中状态更快?

var shopCartList = [{
      id0,
      name: "123",
      productList: [{
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        }
      ]
    }, {
      id0,
      name: "123",
      productList: [{
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        },
        {
          id0,
          name: "123",
          isChecked: false,
        }
      ]
    }]
    //全部替换
    shopCartList.forEach((value, index) => {
      value.productList.forEach((val, ind) => {
        val.isChecked = true
      })
    })
    this.setData({
      shopCartList: shopCartList
    })
    //逐条替换
    shopCartList.forEach((value, index) => {
      value.productList.forEach((val, ind) => {
        this.setData({
          ["shopCartList[" + index + "].productList["+ ind +"].isChecked"]: true
        })
      })
    })


最后一次编辑于  2020-12-25
回答关注问题邀请回答
收藏

2 个回答

  • 金煜峰
    金煜峰
    2020-12-25

    这样最快

    var data = {}
    shopCartList.forEach((value, index) => {
      value.productList.forEach((val, ind) => {
        data["shopCartList[" + index + "].productList["+ ind +"].isChecked"] = true
      })
    })
    this.setData(data)
    
    2020-12-25
    有用 1
    回复 4
    • 思无邪
      思无邪
      2020-12-25
      感谢大佬的回答
      2020-12-25
      回复
    • 思无邪
      思无邪
      2020-12-25
      大佬像你这种写法 是不是就不会重新加载其它没有被改变的数据
      2020-12-25
      回复
    • 金煜峰
      金煜峰
      2020-12-25回复思无邪
      是的,这样只进行了一次setData,且比起整体设置,数据量更小
      2020-12-25
      回复
    • 思无邪
      思无邪
      2020-12-25
      感谢~学到了
      2020-12-25
      回复
  • xy
    xy
    2020-12-25

    全部替换

    2020-12-25
    有用 1
    回复 5
    • xy
      xy
      2020-12-25
      全选 采用全部替换
      单选 采用逐条替换
      2020-12-25
      回复
    • 思无邪
      思无邪
      2020-12-25
      若是内容字段较多 也会比逐条快吗?
      2020-12-25
      回复
    • xy
      xy
      2020-12-25回复思无邪
      会的 for循环setData 是一个不明智的选择
      2020-12-25
      回复
    • xy
      xy
      2020-12-25回复思无邪
      2020-12-25
      1
      回复
    • xy
      xy
      2020-12-25回复xy
      这样无非是最好的选择
      2020-12-25
      回复
登录 后发表内容
问题标签