omi
omi copied to clipboard
【OMIX】对于wx:for="{{$.logs}}",给logs push新的一条记录后的setData方式确认
请问下OMIX的一个场景实现方式, 对于wx:for="{{$.logs}}"使用的logs,给logs push新的一条记录后, 是等价于下面哪个方式? 方式1、this.setData({ logs: push之后的logs })
方式2、 this.setData({ ["logs[新index]"]: 新log })
好问题,等价于 2。这里特别优化过。
具体源码 https://github.com/Tencent/omi/blob/master/packages/omix/utils/create.js#L217-L221
@dntzhang 顺便借楼咨询一下有实现多值及多次 setData 的聚合吗? case 1: setData({a:1, b: 2}) 是一次跨层通信,现在写成 this.store.data.a = 1; this.store.data.b = 2 有优化吗?
case 2: setData({a:1}), setData({b:2}),一些框架会用 nextTick 聚合成一次,omix 这种有吗?
@aolu11 没有优化,可以感觉可以包一下。
omix(()=>{
this.store.data.a=1
this.store.data.b=2
})
@dntzhang
嗯,我猜想可能是没有,因为要优化 case 1,无非最终还是回到 westore 的老路,弄个 update() 的 API,当然现在已经有了直接赋值,update 语义就不好了,比如可能叫 batch(),或者你说这种,总归是要搞个单独的 API
case 2 可能就依赖基础库 2.2.3(wx.nextTick,或者自己实现一个定时器来buffer,有点杂)
实际上导致 setData 性能问题的主要还是已经优化的长列表问题,这两种无非是写码时候的心理性的优化,也无所谓了
好问题,等价于 2。这里特别优化过。
了解了,感谢!