收藏
回答

调用setData时会把页面中未用到的属性值也传递给视图层吗?期望技术大佬来解惑

调用setData时会把页面中未用到的属性值也传递给视图层吗?

比如:data中存在三个属性A、B、C,其中A和B在页面中渲染使用,C用于逻辑控制不用与页面渲染

data:{
  A:'a',
  B:'b',
  C:'c'
} 

业务处理,调用setData

this.data.C = 'c1'
this.setData({A:'a1'})

在上面代码中调用setData之前对C做了赋值操作,那么调用setData时小程序的逻辑层与视图层通讯时传输的data的数据包含A、B、C三个属性值还是只包含更新的A属性,或者是A、B呢?

期待大佬解惑!


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

1 个回答

  • brave
    brave
    2020-05-07
    this.data.C = 'c1'    // 这里只影响逻辑层,视图层还是原来的值
    this.setData({A:'a1'})  // setData是更新视图,即逻辑层与视图层保持数据值一致
    
    2020-05-07
    有用 1
    回复 12
    • Wang
      Wang
      2020-05-07
      我关注的重点是setData时逻辑层与视图层之间传输的数据是什么,是只传输A,还是A、B,还是A、B、C
      2020-05-07
      回复
    • brave
      brave
      2020-05-07回复Wang
      setData会去更新视图层对应绑定的数据,也就是你修改了C的值,没通过setData的话,视图层还是不会触发数据更新的
      2020-05-07
      回复
    • Wang
      Wang
      2020-05-07回复brave
      我知道修改C值不会触发视图更新。
      我关注的重点是代码执行完以后逻辑层与视图层之间传输的数据是什么,是只传输A,还是A、B,还是A、B、C
      2020-05-07
      回复
    • brave
      brave
      2020-05-07回复Wang
      不触发就是不会把新的值传过去啊,这样还理解不了
      2020-05-07
      回复
    • Wang
      Wang
      2020-05-07回复brave
      我一直在说的是调用setData时传输的数据是什么,是只传输了A,还是A、B或者A、B、C,你从始至终也没有回答传输的数据是什么,而你一直在说修改C不触发更新。
      表象是视图更新了A,但是底层的逻辑层与视图层的数据传输是只传输了A,还是传输了A、B,还是传输了A、B、C呢?
      2020-05-07
      回复
    查看更多(7)
登录 后发表内容
问题标签