小程序中setData中内存开销的相关疑问

例如我的初始数据为

initdata:{
    name: 1;
    name: 2;
    name: 3;
    name: 4;
    name: 5;
}

之后,新的数据为

newdata:{
    name: 1;
    name: 2;
    name: 3;
    name: 4;
    name: 5;
    name: 6;
    name: 7;
    name: 8;
    name: 9;
    name: 10;
}

那么,当我setData(newdata)的时候,小程序是自动对比两次data,然后只更新后面新增的5条数据,还是直接用newdata替换initdata?

回复
阅读 1.9k
2 个回答

这些声望高的就会点减号,很正常的疑问。
我估计原理和react的setState差不多

setState(state, callback) {
    let s = this.state;
    if (!this.prevState) this.prevState = extend({}, s);
    extend(s, typeof state==='function' ? state(s, this.props) : state);
    if (callback) this._renderCallbacks.push(callback);
    enqueueRender(this);  // enqueueRender函数里面有异步更新视图逻辑
}
export function extend(obj, props) {
    for (let i in props) obj[i] = props[i];
    return obj;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏