page.setData 遇到的问题(bug?)
发布于 4 年前 作者 min84 750 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)

数组 arr,在使用 arr.splice(i, 1)  删除 arr 中的元素(使用了自定义组件)后,再使用 this.setData({ arr }),则位于 i (删除之前是 i + 1)的元素,数据有误

  • 预期表现

如下图所示,理论上,删除一个元素后,不应该改变后一个元素的值,但实际上却改变了

  • 复现路径
  • 提供一个最简复现 Demo

demo 链接:

链接:https://pan.baidu.com/s/1sCjJqr-kWrMaUbJ3W5UdAA 

提取码:sn2h

4 回复

直接上代码吧,楼主可以参考下

Component({
  lifetimes: {
 
  },
  observers: {
    'text': function(text) {
      let t = text % 2 === 0 ? "偶数" : "奇数"
      this.setData({
        t
      })
    }
  },
  /**
   * 组件的属性列表
   */
  properties: {
    text:{
      type: Number,
      value: 0
    }
  },
  attached: function () {
    let t = this.properties.text % 2 === 0 ? "偶数" : "奇数"
    this.setData({
      t
    })
  },
  detached: function(e) {
    // 在组件实例被从页面节点树移除时执行
  },
  /**
   * 组件的初始数据
   */
  data: {
    t: "偶数"
  },
 
  /**
   * 组件的方法列表
   */
  
})

你是不是想问为什么删除12之后,13是偶数吗

奇数偶数是根据index写的?

回到顶部